Winapi 读取mbr时Createfile失败
在WinXP上读取mbr时Createfile失败。返回-1,即Winapi 读取mbr时Createfile失败,winapi,mbr,Winapi,Mbr,在WinXP上读取mbr时Createfile失败。返回-1,即无效的\u设备\u句柄 HANDLE hDisk = CreateFile((LPCWSTR)"\\\\.\\PhysicalDrive0", GENERIC_READ| GENERIC_WRITE, FILE_SHARE_READ| FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0,NULL ); 知道为什么吗?你忘了在字符串常量“\\.\PhysicalDrive0”中添加“L” 只有在使用un
无效的\u设备\u句柄
HANDLE hDisk = CreateFile((LPCWSTR)"\\\\.\\PhysicalDrive0", GENERIC_READ| GENERIC_WRITE, FILE_SHARE_READ| FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0,NULL );
知道为什么吗?你忘了在字符串常量“\\.\PhysicalDrive0”中添加“L” 只有在使用unicode版本的API(即CreateFileW())时,此选项才正确。使用此选项:
HANDLE hDisk = CreateFile(L"\\\\.\\PhysicalDrive0", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
这对我很有用。如果你要使用
L“…”
那么你应该调用CreateFileW()
明确地说:CreateFileW(L“\\\\\.\\PhysicalDrive0”,…)
,否则使用TEXT()
宏:CreateFile(TEXT(“\\\\\\\\\.\\PhysicalDrive0”),…)
。
HANDLE hDisk = CreateFile(L"\\\\.\\PhysicalDrive0", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);