Ошибка создания файла при чтении mbr

Сбой создания файла при чтении mbr в WinXP. Возвращает -1, т.е. INVALID_DEVICE_HANDLE

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

Любая идея, почему???


person user1666555    schedule 12.09.2012    source источник


Ответы (2)


Вы забыли добавить 'L' к строковой константе "\\.\PhysicalDrive0".

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

Это верно только тогда, когда вы используете юникодную версию API, то есть CreateFileW().

person gureedo    schedule 12.09.2012
comment
Если вы собираетесь использовать L"...", то вы должны вызвать CreateFileW() явно: CreateFileW(L"\\\\.\\PhysicalDrive0", ...), в противном случае вместо этого используйте макрос TEXT(): CreateFile(TEXT("\\\\.\\PhysicalDrive0"), ...). - person Remy Lebeau; 13.09.2012

Использовать это:

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

Это работает для меня.

person Digvijay Rathore    schedule 07.07.2015