При попытке выгрузить драйвер следющий код "зависает".Насколько я понял, то не вызывается PCloseAdapter. В чем может юыть проблема?
void PCloseAdapter (IN NDIS_HANDLE ProtocolBindingContext, IN NDIS_STATUS Status)
{
_asm
{
int 3
}
DbgPrint("PCloseAdapter called");
NdisSetEvent(&CloseWaitEvent);
return;
}
void OnUnload( IN PDRIVER_OBJECT DriverObject)
{
NDIS_STATUS Status;
DbgPrint("OnUnload called");
IoDeleteSymbolicLink(&SymLink);
IoDeleteDevice(DriverObject->DeviceObject);
NdisResetEvent(&CloseWaitEvent);
NdisCloseAdapter(&Status,BindingAdapter);
if (Status==NDIS_STATUS_PENDING)
{
NdisWaitEvent(&CloseWaitEvent,0);
}
NdisDeregisterProtocol(&Status,ProtocolHandle);
if (NT_SUCCESS(Status)==FALSE)
{
DbgPrint("DeregisterProtocol faild!!!");
}
else
{
DbgPrint("DeregisterProtocol SUCCESS");
}
NdisFreeBufferPool(BufferPoolH);
NdisFreePacketPool(PacketPoolH);
DbgPrint("Free Buffer and Packet Pools");
NdisFreeSpinLock(&GlobalLock);
NdisFreeSpinLock(&ReadlLock);
DbgPrint("Free SpinLock");
return;
}