![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с boot-сектором диска [D6, Win95/98]
DFF © (2004-08-08 11:34:00)Можно ли ТОЛЬКО средствами Windows API прочитать/записать boot-сектор диска/дискеты/Flash-карты в файл/из файла. Заранее всем огромное спасибо.
Ihor Osov'yak (2004-08-08 17:15:00) [21]2 Sergey Kaminski © (08.08.04 16:34) [3]
Это будет даже не логический диск, а неизвестно что.. А человеку надобно физический диск.
>А премерчиком никто не поделиться?
ну так бы писал, что примерчик нужен.. А то льзя-нельзя..
Ps - Ctrl+F1 нажми на CreateFile...
а вообще зачем бут-сектор переписывать?
DFF (2004-08-08 17:11:00) [22]Это - то примерно понятно. А как эту структуру получить? Насколько я знаю, boot-сектора бывают разной длинны.
Sergey Kaminski (2004-08-08 17:08:00) [23]Смотреть структуру MBR
DFF (2004-08-08 17:06:00) [24]А как узнать, где именно распологается boot-сектор?
Sergey Kaminski (2004-08-08 16:36:00) [25]Описка, файл создавать нужно, разумеется для записи, т.е
GENERIC_WRITE
Sergey Kaminski (2004-08-08 16:34:00) [26]Ну, для NT примерно так.
DiskString := Format ('\\.\%s',[DiskLetter]);
H := CreateFile(
PChar(DiskString),
GENERIC_READ,
FILE_SHARE_WRITE,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0
);
И пиши себе, что угодно по всему диску. Только смотри, меня потом не обвиняй :)
Неплохо было бы также изучить геометрию диска, например так:
var
IOCTL_DISK_GET_DRIVE_GEOMETRY: Cardinal;
DiskGeometry: _DISKG_GEOMETRY;
.......
IOCTL_DISK_GET_DRIVE_GEOMETRY :=
GetCtlCode(FILE_DEVICE_DISK,0,METHOD_BUFFERED,FILE_ANY_ACCESS);
Res := DeviceIoControl(
H,
IOCTL_DISK_GET_DRIVE_GEOMETRY,
nil,
0,
@DiskGeometry,
SizeOf(DiskGeometry),
BytesReturned,
nil
);
А потом смотреть поля DiskGeoMetry:
DiskGeometry.MediaType
DiskGeometry.Cylinders.QuadPart
DiskGeometry.TracksPerCylinder
DiskGeometry.SectorsPerTrack]
DiskGeometry.BytesPerSector]
и так далее...
DFF (2004-08-08 16:20:00) [27]А премерчиком никто не поделиться?
Ihor Osov'yak (2004-08-08 15:18:00) [28]если имеется ввиду win32 api - то для NT-ряда - да (для жесткого и флоппи, для флеш - не знаю, но вероятнее всего да). Для W9x - для HDD нет, для флоппи можно, за флеш - не знаю. Но за пределами win32 можно и для W9x (для жесткого и флоппи, для флеш - не знаю).