Здравствуйте, 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.