Click to See Complete Forum and Search --> : SD Card SN on vista


noname_sp1
October 26th, 2008, 11:49 AM
Weekend spent on it, no luck
ANYONE who can give ANY help please, advice. Using
IOCTL_SFFDISK_DEVICE_COMMAND and getting 87 error.
here is a code:
int nSizeOfCmd = sizeof (SFFDISK_DEVICE_COMMAND_DATA) + sizeof(SDCMD_DESCRIPTOR) + 6;
SFFDISK_DEVICE_COMMAND_DATA *pCmdGoIdle = (SFFDISK_DEVICE_COMMAND_DATA*) new BYTE[nSizeOfCmd];
memset(pCmdGoIdle, 0, nSizeOfCmd);
pCmdGoIdle->HeaderSize = sizeof (SFFDISK_DEVICE_COMMAND_DATA);
pCmdGoIdle->Command = SFFDISK_DC_DEVICE_COMMAND;
pCmdGoIdle->ProtocolArgumentSize = sizeof(SDCMD_DESCRIPTOR);
BYTE bySDCmd[6] = {0x42, 0x00, 0x00, 0x00, 0x00, 0x00};
pCmdGoIdle->DeviceDataBufferSize = sizeof(bySDCmd);

///Command protocol
SDCMD_DESCRIPTOR stCmdDescriptor ={0};
stCmdDescriptor.Cmd = SDCMD_IO_RW_DIRECT;
stCmdDescriptor.CmdClass = SDCC_STANDARD;
stCmdDescriptor.ResponseType = SDRT_2;
stCmdDescriptor.TransferDirection = SDTD_WRITE;
stCmdDescriptor.TransferType = SDTT_CMD_ONLY;
memcpy((BYTE *)&pCmdGoIdle->Data[0], &stCmdDescriptor,sizeof(SDCMD_DESCRIPTOR));
memcpy((BYTE *)&pCmdGoIdle->Data[0] + sizeof(SDCMD_DESCRIPTOR), &bySDCmd,sizeof(bySDCmd));

DWORD dwReturn;
DWORD pCmdGoIdle1;
if (!DeviceIoControl(hDevice, IOCTL_SFFDISK_DEVICE_COMMAND,
&pCmdGoIdle, nSizeOfCmd,
&pCmdGoIdle1, nSizeOfCmd,
&dwReturn,
NULL)){
DWORD dwLastError = GetLastError();
}