I need to write a variable length byte stream to a record from my conduit. I
open or create a database but SyncWriteRec always fails with
SYNCERR_REMOTE_BAD_ARG . This is a piece of code I am using:

BYTE rHandle = 0;

int err;



// first try to open database

err = SyncOpenDB("MyDatabase", 0, rHandle, eDbWrite|eDbRead);

if(err != 0)

{

    LogAddEntry("SyncOpenDB failed", slWarning, false);

    // create database if it is not found

    if(err == SYNCERR_FILE_NOT_FOUND)

    {

        CDbCreateDB dbInfo;

        ZeroMemory(&dbInfo, sizeof(dbInfo));

        dbInfo.m_Creator = m_rSyncProperties.m_Creator;

        dbInfo.m_Flags = eRecord;

        dbInfo.m_CardNo = m_rSyncProperties.m_CardNo;

        dbInfo.m_Type = m_rSyncProperties.m_DbType;

        ::strcpy(dbInfo.m_Name, "MyDatabase");

        err = SyncCreateDB(dbInfo);

        if(err != 0)

        {

            LogAddEntry("SyncCreateDB failed", slWarning, false);

            return err;

        }

    }

}



// open a file on local drive withg raw data. All data from the file should
be written to the database record

HANDLE hFile;

hFile = ::CreateFile("C\\MyFileWithRawData.dat",

GENERIC_READ,

0,

NULL,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL,

NULL);

if(hFile == INVALID_HANDLE_VALUE)

{

    DWORD dwError = ::GetLastError();

    return 1;

}

// get the file size, allocate the buffer for data and read all data from
the file to the buffer

DWORD dwFileSize = ::GetFileSize(hFile, NULL);

BYTE* buffer = new BYTE[dwFileSize];

DWORD dwBytesRead;

::ReadFile(hFile, buffer, dwFileSize, &dwBytesRead, NULL);

::CloseHandle(hFile);



// prepare the record structure

CRawRecordInfo recordInfo;

ZeroMemory(&recordInfo, sizeof(recordInfo));

recordInfo.m_FileHandle = rHandle;

recordInfo.m_pBytes = buffer;

recordInfo.m_RecSize = dwBytesRead;

err = SyncWriteRec(recordInfo);



// here SyncWriteRec always fails with err == SYNCERR_REMOTE_BAD_ARG

if(err != 0)

{

    LogAddEntry("SyncWriteRec failed", slWarning, false);

    return err;

}

delete[] buffer;





Any help what's wrong would be greatly appreciated. I am really stuck at
this point.








-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/support/forums/

Reply via email to