services
- From
- Eugene Muzychenko (2:5000/14)
- To
- Yury Haron
- Date
- 2002-12-14T10:15:29Z
- Area
- SU.WINDOWS.NT.PROG
Привет!
13 Dec 02 21:33, you wrote to me:
EM>> чеpез интеpфейс - та может ей создать клиентский дескpиптоp, и
EM>> сама
YH> Да? Вот только пpо такой дескpиптоp котоpый бyдет _автоматически_
YH> yдалён если задача "гpохнется" я что-то ни слова в докyментации не
YH> нашёл. Где я не пpав?
В самом начале задача приходит к тебе через созданный тобою интерфейс (устройство и SymLink к нему), выполняя для этого CreateFile. Тебе при этом присылается запрос IRP_MJ_CREATE, инкрементится Usage Counter, чтоб ты не вздумал выгрузиться, и создается системный дескриптор, как при открывании файла. Когда процесс выполняет CloseHandle (явно или посредством системы при аварийном снятии) - тебе приходит IRP_MJ_CLOSE. Если у тебя при этом еще могут быть и IRP в отложенной обработке - надо делать IoSetCancelRoutine, чтобы отменить эти IRP.
В принципе, схема взаимодействия Win32 с VxD в 9x дралась в основном с NT, так что в этом они похожи :)
YH>>> Я ж тебя даже спpашивал в паpаллельном письме, не знаешь ли ты
YH>>> местных аналогов? Allocate_PM_App_CB, _AllocateThreadDataSlot.
EM>> Я не заметил - ты в конце шибко мелко написал :)
YH> Тепеpь-то ведь заметил? Так почемy бы не ответить? ;-)
Дык, не знаю я таких. Недокументированные, возможно, и есть, но штатных точно нет - принципы взаимодействия другие. В 9x VxD практически штатно служат для модификации ядра, а в NT драйверы - это именно интерфейсы и, по идее, в систему сверх своих функций лазить не должны.
Всего доброго!
Евгений Музыченко
--- GoldED+/W32 1.1.4.7
* Origin: Fox Tracks, Novosibirsk, Russia (2:5000/14)