понедельник, 1 декабря 2008 г.

Установка TDI устройств-фильтров вне DriverEntry

Как известно, самый удобный сценарий для установки TDI фильтра это загрузка драйвера в группе "TDI" и навешивание устройства при загрузке.
В этом случае наш фильтр будет на месте до создания каких либо соединений с протоколом.

Но что если мы хотим загрузиться раньше tcpip, и, при этом, не пропустить момент создания соединений с протоколом?

Тут нам поможет TdiRegisterPnPHandlers. Причем стоит использовать не BindingHandler callback ( ибо когда он вызывается с параметром TDI_PNP_OP_PROVIDERREADY, коварный system уже успевает создать соединение), а ClientPnPAddNetAddress.
Скажем, для tcpip можно смело навешивать фильтр на устройства при добавлении первого IP адреса.

Комментариев нет: