Я пытаюсь получить доступ к внешнему диску USB 3.0 с помощью ReadFile(), но он продолжает возвращать false в ReadFile, а GetLastError() возвращает ERROR_INVALID_PARAMETER. Ниже мой фрагмент кода:ReadFile() возвращает false с возвратом GetLastError ERROR_INVALID_PARAMETER
#define RPD_SECTOR_SIZE 512
HANDLE hDevice = 0;
char driveName[256];
BYTE *pData;
DWORD len;
bool rv;
int errCode;
sprintf(driveName, "\\\\.\\PhysicalDrive1");
hDevice = CreateFile (driveName,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_NO_BUFFERING,
NULL);
pData = (BYTE *)VirtualAlloc(NULL, RPD_SECTOR_SIZE, MEM_COMMIT, PAGE_READWRITE);
if (pData == NULL) {
return RPD_MEMORY_ALLOCATION_ERROR;
}
rv = ReadFile(hDevice, pData, RPD_SECTOR_SIZE, &len, NULL);
if (!rv) {
errCode = GetLastError();
}
Самое смешное, что код работает отлично для другого USB 2.0 диск. Есть ли что-то, что я должен делать по-другому для доступа к дискам USB 3.0?
Кто-нибудь знает, что является недопустимым параметром?
Спасибо.