> > > Я имел ввиду прочитать MBR программно (прога > > Win32).... > > Открываешь девайс \device\harddisk0\partition0 и > читаешь > > оттуда 512 байт если прав хватит > Не удается открыть этот девайс... Работаю под админом... > Киньте пример плиз... На самом деле открыть любой девайс из директории объектов \device\ можно только из драйвера. Из Win32 приложения открываются только записи в директории \DosDevices\ (является ссылкой на \GLOBAL??\ в XP и на \??\ в 2000). Но сам \Device\Harddisk0\Partition0 является ссылкой на \Device\Harddisk0\DR0, в свою очередь \GLOBAL??\PhysicalDrive0 тоже является ссылкой на \Device\Harddisk0\DR0. Что в свою очередь дает нам право открывать ее.
Вот пример:
#include <windows.h>
int
main() {
HANDLE hFile;
char buf[512];
DWORD junk;
hFile = CreateFile("\\\\.\\PhysicalDrive0", MAXIMUM_ALLOWED, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
goto fail;
if (!ReadFile(hFile, buf, sizeof(buf), &junk, NULL))
goto fail;
CloseHandle(hFile);
hFile = CreateFile("mbr.bin", MAXIMUM_ALLOWED, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
goto fail;
if (!WriteFile(hFile, buf, sizeof(buf), &junk, NULL))
goto fail;
return 0;
fail:
if (hFile != INVALID_HANDLE_VALUE)
CloseHandle(hFile);
return -1;
}
---
Вот только в MSDN-овской статье по CreateFile написано как открывать физические диски.
|