Hi, here is some code ..plz clear errors

i need to send some datat to another window. so i used the code. i hv no problem with retriving string value. the problem lies when i try to retrieve the long values. i am gettin the second long value in the place of first value and 253 value for the second long variable. i need to add to the structure another variable BSTR . so what todo?
//Sending
typedef struct tagSII{
long lsessionID;
long lqueue;
BSTR dml;
CString sCommand;
}SII ;

sii.lsessionID = 5;
sii.lqueue = 22;
sii.sCommand="0x5050910600000004";
long lBufferLength = sizeof(long) + sizeof(long) + sii.sCommand.GetLength() +1;
BYTE * pBuffer = new BYTE(lBufferLength);
memcpy(pBuffer, &sii.lsessionID, sizeof(long));
memcpy(pBuffer, &sii.lqueue, sizeof(long));
strcpy((char *)&pBuffer[sizeof(long) + sizeof(long)],sii.sCommand);

sii.dml = (unsigned short*)"C:\\Documents and Settings\\abhiram\\NEWFOLDER";
memcpy(pBuffer,&sii.dml,sizeof(unsigned short));

copy.dwData =500;
copy.cbData = lBufferLength;
copy.lpData = pBuffer;
lresult =pPdmm->SendMessage(WM_COPYDATA,(WPARAM)sii.dml,(LPARAM)(LPVOID) ©);

//Receving

OOL CDiDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{ CString str;
BYTE * pData = (BYTE *)pCopyDataStruct->lpData;
SII sii1;
memcpy( &sii1.lsessionID, pData, sizeof(int) );
memcpy( &sii1.lqueue, &pData[sizeof(int)], sizeof(int) );
sii1.sCommand = CString((const char *)&pData[sizeof(int) + sizeof(int)]);
MessageBox(sii1.sCommand);
}
[1620 byte] By [abiram01] at [2007-11-18 13:40:38]