Fat, Секторы, Кластеры Чтение И Работа Со Всем Этим Через C++ Builder

18.10.2010
4
0
#1
Стоит задача написать программу извлекающую секторы диска, информацию о FAT и саму FAT.
Создаю одну тему под таким обширным названием, чтобы писать все вопросы какие возникнут.

И так первая же проблема:

Как бы не писал в функции CreateFile первый параметр: "\\\\.\\PhysicalDrive1", "\\\\.\\C:", hFile выдает INVALID_HANDLE_VALUE. Подставлял разные буквы цифры, даже так писал "\\\\.\\PhysicalDriveC:".

Где я ошибся?!

C++:
HANDLE hFile=CreateFile("\\\\.\\PhysicalDrive1",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (hFile==INVALID_HANDLE_VALUE)
ShowMessage("Error");
P.S. Попутный вопрос нашел описание для этой функции в статье для Delphi и там было написано:
Проще всего это делать в Windows 2000/XP (с правами администратора, конечно). Работа с жестким диском в этих операционных системах производится путем открытия диска как файла с помощью функции CreateFile и указания диска или раздела по схеме Device Namespace (открывается физический диск - '\.PHYSICALDRIVE<n>'), полученный хэндл в дальнейшем используется для работы с диском с помощью функций ReadFile, WriteFile и DeviceIoControl.
Не значит ли это, что сколько я не бейся на Windows 7 я не получу нужного результата? (вышеприведенный код придется запускать на XP, так что исправления нужны под XP, программу так же проверял на XP там такая же ошибка)
 
18.10.2010
4
0
#2
Проблема решена, но вместо неё новая)))

Код:
hFile=CreateFile("\\\\.\\PhysicalDrive1",...
Номер диска в этом выражении как определить?

Мне нужно выбрать диска через компонент DriveComboBox и используя данные из него вызвать функцию.. Я нашел в этом компоненте, где буква диска отображается, но надо запускать по цифре.

Как мне получить необходимую мне цифру по известной букве цифра? или из DriveComboBox можно как то вытащить сразу цифру?