I am try to use the following code to get information from CF card that plugs into USB card reader.
DeviceIoControl() return FALSE and GetLastError() return ERROR_SHARING_VIOLATION (32)
If I try to create PhysicalDrive1 (Fixed Hard Drive) and run the same code,
DeviceIoControl() return TRUE.
I don't know why there was a sharing violation error?
Code:struct IDENTIFY_DEVICE_OUTDATA { SENDCMDOUTPARAMS SendCmdOutParam; BYTE Data[IDENTIFY_BUFFER_SIZE - 1]; }; HANDLE hDevice = CreateFile(_T("\\\\.\\PhysicalDrive4"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if (hDevice == INVALID_HANDLE_VALUE) return ; IDENTIFY_DEVICE_OUTDATA sendCmdOutParam = {0}; SENDCMDINPARAMS sendCmd = {0}; sendCmd.irDriveRegs.bCommandReg = ID_CMD; sendCmd.cBufferSize = IDENTIFY_BUFFER_SIZE; const DWORD DFP_RECEIVE_DRIVE_DATA = 0x0007C088; DWORD dwReturned = 0; BOOL bRet = DeviceIoControl(hDevice, DFP_RECEIVE_DRIVE_DATA, &sendCmd, sizeof(SENDCMDINPARAMS), &sendCmdOutParam, sizeof(IDENTIFY_DEVICE_OUTDATA), &dwReturned, NULL); DWORD dwErr = 0; if (bRet == FALSE) dwErr = GetLastError(); CloseHandle(hDevice);




Reply With Quote