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)