Здравствуйте, такая проблемма..
Надо срочно написать программу для составления карты жесткого диска
ну там.. сектора: использованные, неиспользованные и badы.
как SpeedDisk!
Вопрос:
1) Как перебрать все сектора на жестком диске
2) Как считать состояние сектора
Рыл, рыл интернет, нашел что то около: IOCTL_DISK_VERIFY и DeviceIoControl
но ничего конкретного нет.
Помогите plz. желательно примерчики с кодом по конкретнее, или как использовать то что нашел. Желательно для Delph.
Здравствуйте, DDS, Вы писали:
DDS>Здравствуйте, такая проблемма..
DDS>Надо срочно написать программу для составления карты жесткого диска
DDS>ну там.. сектора: использованные, неиспользованные и badы.
DDS>как SpeedDisk!
DDS>Вопрос:
DDS>1) Как перебрать все сектора на жестком диске
DDS>2) Как считать состояние сектора
DDS>Рыл, рыл интернет, нашел что то около: IOCTL_DISK_VERIFY и DeviceIoControl
DDS>но ничего конкретного нет.
DDS>Помогите plz. желательно примерчики с кодом по конкретнее, или как использовать то что нашел. Желательно для Delph.
DeviceIoControl + FSCTL_GET_VOLUME_BITMAP =
здесь
Здравствуйте, korzhik, Вы писали:
K>DeviceIoControl + FSCTL_GET_VOLUME_BITMAP = здесь
Вроде бы то что надо! Все устраивает, только вот пробема, не могу откомпилить
дельфям неизвестна константа FSCTL_GET_VOLUME_BITMAP, ее номерок.
Скажите пожалуйста какую библиотеку или модуль подключить или скачать, или какое число?
И еще проблема.. не знаю формат возвращаемой структуры.
там говориться что просто БИТ! 0 — занятый кластер, 1 — свободный.
как bad распознать?.. нy c этим я мож нарою а с константой проблема.
Здравствуйте, DDS, Вы писали:
DDS>Здравствуйте, korzhik, Вы писали:
K>>DeviceIoControl + FSCTL_GET_VOLUME_BITMAP = здесь
DDS>Вроде бы то что надо! Все устраивает, только вот пробема, не могу откомпилить
DDS>дельфям неизвестна константа FSCTL_GET_VOLUME_BITMAP, ее номерок.
DDS>Скажите пожалуйста какую библиотеку или модуль подключить или скачать, или какое число?
DDS>И еще проблема.. не знаю формат возвращаемой структуры.
DDS>там говориться что просто БИТ! 0 — занятый кластер, 1 — свободный.
DDS>как bad распознать?.. нy c этим я мож нарою а с константой проблема.
Смотри
JEDI API Library. Тебя интересует Win32API.zip
Здравствуйте, korzhik, Вы писали:
K>DeviceIoControl + FSCTL_GET_VOLUME_BITMAP = здесь
FSCTL_GET_VOLUME_BITMAP даст свободные и занятые кластеры. Насчет бэдов на IOCTL_DISK_VERIFY сильно надеяться не стоит, см.
здесьАвтор: MShura
Дата: 06.09.05
Здравствуйте, DDS, Вы писали:
K>>DeviceIoControl + FSCTL_GET_VOLUME_BITMAP = здесь
DDS>Вроде бы то что надо! Все устраивает, только вот пробема, не могу откомпилить
DDS>дельфям неизвестна константа FSCTL_GET_VOLUME_BITMAP
Если все-таки пригодится, то в winddk в файле winioctl.h эта константа определяется как (цитирую):
#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS) // STARTING_LCN_INPUT_BUFFER, VOLUME_BITMAP_BUFFER
В Delphi
FSCTL_GET_VOLUME_BITMAP:=CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS);
где
unit DevIOCtl
interface
Type
ULONG = LongWord; //ULONG is just a LONGWORD (32-bit unigned integer)
Const
FILE_DEVICE_FILE_SYSTEM = $00000009;
METHOD_NEITHER = 3;
FILE_ANY_ACCESS = 0;
Function CTL_CODE( DeviceType, Func, Method, Access: ULONG ): ULONG;
implementation
Function CTL_CODE( DeviceType, Func, Method, Access: ULONG ): ULONG;
begin
Result:=((DeviceType shl 16) or (Access shl 14) or (Func shl 2) or Method);
end;
При необходимости могу поделиться всем файлом DevIOCtl.pas. Если что пишите сразу в мыло.
Удачи!
... << RSDN@Home 1.1.4 beta 7 rev. 447>>