2012-09-12 104 views
0

讀取WinXP上的mbr時,Createfile失敗。返回-1即INVALID_DEVICE_HANDLE讀取mbr時Createfile失敗

HANDLE hDisk = CreateFile((LPCWSTR)"\\\\.\\PhysicalDrive0", GENERIC_READ| GENERIC_WRITE, FILE_SHARE_READ| FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0,NULL); 

任何想法爲什麼???

回答

1

你忘了 'L' 添加到字符串常量 「\\。\ PhysicalDrive0」。

HANDLE hDisk = CreateFile(L"\\.\PhysicalDrive0", GENERIC_READ | GENERIC_WRITE, 
    FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); 

只有當您使用API​​的unicode版本,即CreateFileW()時,纔是正確的。

+2

如果你打算使用'L」 ... 「',那麼你應該叫'CreateFileW()'explicitially:'CreateFileW(L」 \\\\ \\ PhysicalDrive0" 。,...)',否則'使用'TEXT()'宏代替:'CreateFile(TEXT(「 –

0

使用此:

HANDLE hDisk = CreateFile(L"\\\\.\\PhysicalDrive0", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); 

它爲我工作。

相關問題