各位大佬,請問我在用win32 api去洗掉磁區時,是先讀mbr,結果讀mbr的時候報錯:GetLastError 87 引數不對。檢查了引數,沒發現有什么問題,代碼如下:
TCHAR diskPath[DISK_PATH_LEN];
swprintf_s(diskPath, _T("\\\\.\\PhysicalDrive%d"), Disk);
HANDLE hDevice = CreateFile(
diskPath,GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, //default security attributes
OPEN_EXISTING, // disposition
0, // file attributes
NULL);
DWORD dwByteRead;
BYTE buf[512];
memset(buf, 0, 512);
if (!ReadFile(hDevice, buf, 512, &dwByteRead, NULL))
{
AfxMessageBox(_T("ReadFile MBR Error: %ld\n"), GetLastError());//GetLastError 87:引數不對
return -1;
}
請問各位,這段代碼哪里錯了,為啥總報GetLastError() - 87呢????我在網上查看過,相關的解決辦法,
1.在CreateFile設定了FILE_FLAG_OVERLAPPED,ReadFile時將OVERLAPPED設定為NULL。
2.CreateFile沒有設定FILE_SHARE_WRITE。
3.ReadFile時,buf的大小應該為存盤介質扇區的整數倍。
這些情況都試過,仍然是GetLastError() - 87?還望各位給點指點一下,小弟不勝感激!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/8217.html
上一篇:多鄰國技術
下一篇:關于U盤磁區格式化的疑問
