Здравствуйте, TarasCo, Вы писали:
TC>Поправка: не ProtocolBindComplete, а ProtocolOpenAdapterComplete ( по крайней мере, так ее именуют в DDK )
OldReceiveHandler = ProtocolCharacteristics->Ndis40Chars.Ndis30Chars.ReceiveHandler;
ProtocolCharacteristics->Ndis40Chars.Ndis30Chars.ReceiveHandler = NewNdisReceive;
OldNdisOpenAdapterComplete = ProtocolCharacteristics->Ndis40Chars.Ndis30Chars.OpenAdapterCompleteHandler;
ProtocolCharacteristics->Ndis40Chars.Ndis30Chars.OpenAdapterCompleteHandler = NewNdisOpenAdapterComplete;
((NDISREGISTERPROTOCOL)(OldNdisRegisterProtocol))(Status, NdisProtocolHandle, ProtocolCharacteristics,
CharacteristicsLength);
NewNdisReceive вызывается, а NewNdisOpenAdapterComplete — нет, этим я исключаю какую-то вероятность того что я что-то сделал не правильно... Видимо NdisOpenAdapter отрабатывает не в ассинхронном режиме, либо не попадает в состояние pending... (позднее) так и есть, привожу лог в котором отображены статусы которые возвращает оригинальный NdisOpenAdapter
[Hook CALL] NewNdisRegisterProtocol [TCPIP]
[Hook CALL] NewNdisOpenAdapter [\DEVICE\{F636A717-6B4F-4913-9E81-D673B4F7D9CE}]
[OpenAdapter] Status: SUCCESS
[End Hooked CALL] NewNdisOpenAdapter
[Hook CALL] NewNdisRegisterProtocol [TCPIP_WANARP]
[Hook CALL] NewNdisOpenAdapter [\DEVICE\NDISWANIP]
[OpenAdapter] Status: SUCCESS
[End Hooked CALL] NewNdisOpenAdapter
[Hook CALL] NewNdisRegisterProtocol [NDISUIO]
[Hook CALL] NewNdisOpenAdapter [\DEVICE\{F636A717-6B4F-4913-9E81-D673B4F7D9CE}]
[OpenAdapter] Status: SUCCESS
[End Hooked CALL] NewNdisOpenAdapter