информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Нашел самый правильный способ отлавливания момента доступности дисков [upd] 10.01.06 13:10  Число просмотров: 2973
Автор: amirul <Serge> Статус: The Elderman
Отредактировано 10.01.06 13:17  Количество правок: 1
<"чистая" ссылка>
> а посмотрел код IoInitSystem в
> win2k\private\ntos\io\ioinit.c
> Хотя учту. Проверю это дело под разными виндами

Насчет того, что симлинки создаются прямо в ftdisk-е это соврал. Вернее симлинки создаются, но я не посмотрел какие. А создается там симлинк \Device\Harddisk0\Volume1 -> \Device\HarddiskVolume1

Симлинки же в \DosDevices\ создаются в MountMgr.sys
kd> kv
ChildEBP RetAddr  Args to Child              
fc912c0c fc4dbc4b fc912c20 fc912c6c 00000000 nt!IoCreateSymbolicLink (FPO: [Non-Fpo])
fc912c28 fc4e27a8 e1287520 fc912c6c fc4db99c MountMgr!GlobalCreateSymbolicLink+0x23 (FPO: [Non-Fpo])
fc912ca4 fc4e2b3b 80e4be48 fc912d64 00000000 MountMgr!MountMgrMountedDeviceArrival+0x380 (FPO: [Non-Fpo])
fc912cc8 8054c75a fc912d1c 80e4be48 804ed100 MountMgr!MountMgrMountedDeviceNotification+0x49 (FPO: [Non-Fpo])
fc912cf0 805a1908 fc4e2af2 fc912d1c 80e4be48 nt!PiNotifyDriverCallback+0x6d (FPO: [Non-Fpo])
fc912d44 805a1fca e1280278 8065d578 00000001 nt!IopNotifyDeviceClassChange+0xab (FPO: [Non-Fpo])
fc912d74 804ebd08 80e76cd0 00000000 80e8f020 nt!PiWalkDeviceList+0xae (FPO: [Non-Fpo])
fc912dac 80559026 80e76cd0 00000000 00000000 nt!ExpWorkerThread+0xfe (FPO: [Non-Fpo])
fc912ddc 8050f513 804ebc35 00000001 00000000 nt!PspSystemThreadStartup+0x34 (FPO: [Non-Fpo])
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16
kd> dS fc912c20; dS fc912c6c
e1287828  "\GLOBAL??\Volume{57dd9f09-2359-1"
e1287868  "1d9-91ad-806d6172696f}"
e1288bf0  "\Device\HarddiskVolume1"

---

Происходит это сразу после реэнумерации устройств в PartMgr-е (еще до выхода из IopInitializeBootDrivers) и до начала инициализации системных драйверов (IopInitializeSystemDrivers). Короче сам mount manager получает информацию о новых дисках через нотификацию, зарегистрированную в IoRegisterPlugPlayNotification

Если не хватит MSDN-а, можешь глянуть на код \private\ntos\mountmgr\mountmgr.c на предмет использования или поискать в гугльгруппах

-----------------
Кстати, а где это в IoInitSystem видно, что можно использовать диски (правда не по симлинкам, а напрямую через устройства)? Сами девайсы создаются уже после инициализации ВСЕХ boot-драйверов во время энумерации девайсов, а симлинки к ним, как я уже сказал в MountMgr-е во время нотификации об изменениях в классе "Дисковые устройства"
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach