Status = NdisMRegisterDevice( WrapperHandle,
&ntDeviceName,
&win32DeviceName,
MajorFunctions,
&deviceObject,
&GlobalData.NdisDeviceHandle );
// проверяем статус
if( Status != NDIS_STATUS_SUCCESS )
{
if(GlobalData.ProtHandle)
NdisDeregisterProtocol( &Status, GlobalData.ProtHandle );
if( GlobalData.NdisDeviceHandle )
NdisMDeregisterDevice( GlobalData.NdisDeviceHandle );
if( WrapperHandle )
NdisTerminateWrapper( WrapperHandle, NULL );
return (Status);
}
В данном случае - я видимо не отследил ошибку...
Ты должен взять без GlobalData структуры просто описать NdisDeviceHandle
Если ты обратишь книмание вот тут
NdisDeregisterProtocol( &Status, GlobalData.ProtHandle );
достаточно просто убрать GlobalData. и все заработает ибо...
NdisRegisterProtocol(&Status,
&ProtHandle,
&PChars,
sizeof(NDIS_PROTOCOL_CHARACTERISTICS));
ASSERT(Status == NDIS_STATUS_SUCCESS);
NdisIMAssociateMiniport(DriverHandle, ProtHandle);
Уже идет безо всякой GlobalData...
Я буду скоро делать ревизию своих статей и сделаю исправления - прошу прощения...