Re[3]: Прямая запись на диск
От: MShura  
Дата: 03.02.04 13:44
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Привет!


PD>MShura wrote:

>>
>> Даже WIN32 API предоставляет доступ к этим потокам.
>> Точно не помню, но по моему что-то типа так CreateFile( "C:\\boot.ini:Stream", ... )

PD>Все верно, только если файл сотрут, то и информация эта исчезнет. И даже

PD>если его скопируют (обычными средствами), то она скопирована не будет.

Для этого надо воспользоваться каким-нибудь общим файлом (я про это упомянул).
А вообще-то есть еще одно место, где можно хранить своё.
Речь идет о файле $Boot. Его данные всегда непрерывны и начинаются с кластера 0.
Узнаешь его размер, с помощью FindFirstFile( "C:\\$Boot", &data ).
Читаешь данные. Эти данные — исполняемый код загрузчика. Теперь основная задача определить размер кода.
Оставляю эту задачу на твоё усмотрение. Обычно размер этого кода меньше полного размера на несколько секторов.

Соответственно в конец можно писать.

Одна из моих программ так и делает....


В некоторых ситуациях, когда размер кластера больше сектора, может получиться "дырка" размером меньше кластера.
Эта "дырка" находится за пределами адресуемого NTFS пространством, но в пределах FDISK размера.
Т.е. если FDISK размер — N секторов, размер кластера M секторов, на разделе K кластеров, то

дырка здесь:
от K*M + 1 до (N — 2) включительно
N-1 — копия boot.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.