Создание карты жесткого диска!!!
От: DDS  
Дата: 01.11.05 20:40
Оценка:
Здравствуйте, такая проблемма..
Надо срочно написать программу для составления карты жесткого диска
ну там.. сектора: использованные, неиспользованные и badы.
как SpeedDisk!

Вопрос:
1) Как перебрать все сектора на жестком диске
2) Как считать состояние сектора

Рыл, рыл интернет, нашел что то около: IOCTL_DISK_VERIFY и DeviceIoControl
но ничего конкретного нет.

Помогите plz. желательно примерчики с кодом по конкретнее, или как использовать то что нашел. Желательно для Delph.
Re: Создание карты жесткого диска!!!
От: korzhik Россия  
Дата: 01.11.05 22:02
Оценка:
Здравствуйте, 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 = здесь
Re[2]: Создание карты жесткого диска!!!
От: DDS  
Дата: 02.11.05 20:45
Оценка:
Здравствуйте, korzhik, Вы писали:

K>DeviceIoControl + FSCTL_GET_VOLUME_BITMAP = здесь


Вроде бы то что надо! Все устраивает, только вот пробема, не могу откомпилить
дельфям неизвестна константа FSCTL_GET_VOLUME_BITMAP, ее номерок.
Скажите пожалуйста какую библиотеку или модуль подключить или скачать, или какое число?

И еще проблема.. не знаю формат возвращаемой структуры.
там говориться что просто БИТ! 0 — занятый кластер, 1 — свободный.
как bad распознать?.. нy c этим я мож нарою а с константой проблема.
Re[3]: Создание карты жесткого диска!!!
От: Danchik Украина  
Дата: 03.11.05 11:43
Оценка:
Здравствуйте, 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
Re[2]: Создание карты жесткого диска!!!
От: wildwind Россия  
Дата: 03.11.05 15:02
Оценка:
Здравствуйте, korzhik, Вы писали:

K>DeviceIoControl + FSCTL_GET_VOLUME_BITMAP = здесь


FSCTL_GET_VOLUME_BITMAP даст свободные и занятые кластеры. Насчет бэдов на IOCTL_DISK_VERIFY сильно надеяться не стоит, см. здесь
Автор: MShura
Дата: 06.09.05
Re[3]: Создание карты жесткого диска!!!
От: Shurf Россия  
Дата: 05.11.05 22:40
Оценка:
Здравствуйте, 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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.