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

  • Автор темы Andersen1313
  • Дата начала
A

Andersen1313

Стоит задача написать программу извлекающую секторы диска, информацию о 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 там такая же ошибка)
 
A

Andersen1313

Проблема решена, но вместо неё новая)))

Код:
hFile=CreateFile("\\\\.\\PhysicalDrive1",...

Номер диска в этом выражении как определить?

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!