Author: cgutman Date: Wed May 6 03:43:18 2009 New Revision: 40806
URL: http://svn.reactos.org/svn/reactos?rev=40806&view=rev Log: - Register the unload handler so it gets called by NDIS
Modified: trunk/reactos/drivers/network/tcpip/datalink/lan.c trunk/reactos/drivers/network/tcpip/include/lan.h
Modified: trunk/reactos/drivers/network/tcpip/datalink/lan.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/tcpip/datal... ============================================================================== --- trunk/reactos/drivers/network/tcpip/datalink/lan.c [iso-8859-1] (original) +++ trunk/reactos/drivers/network/tcpip/datalink/lan.c [iso-8859-1] Wed May 6 03:43:18 2009 @@ -1264,6 +1264,42 @@ FreeAdapter(Adapter);
return NdisStatus; +} + +VOID +NTAPI +LANUnregisterProtocol(VOID) +/* + * FUNCTION: Unregisters this protocol driver with NDIS + * NOTES: Does not care wether we are already registered + */ +{ + TI_DbgPrint(DEBUG_DATALINK, ("Called.\n")); + + if (ProtocolRegistered) { + NDIS_STATUS NdisStatus; + PLIST_ENTRY CurrentEntry; + PLIST_ENTRY NextEntry; + PLAN_ADAPTER Current; + KIRQL OldIrql; + + TcpipAcquireSpinLock(&AdapterListLock, &OldIrql); + + /* Search the list and remove every adapter we find */ + CurrentEntry = AdapterListHead.Flink; + while (CurrentEntry != &AdapterListHead) { + NextEntry = CurrentEntry->Flink; + Current = CONTAINING_RECORD(CurrentEntry, LAN_ADAPTER, ListEntry); + /* Unregister it */ + LANUnregisterAdapter(Current); + CurrentEntry = NextEntry; + } + + TcpipReleaseSpinLock(&AdapterListLock, OldIrql); + + NdisDeregisterProtocol(&NdisStatus, NdisProtocolHandle); + ProtocolRegistered = FALSE; + } }
VOID @@ -1315,6 +1351,7 @@ ProtChars.BindAdapterHandler = ProtocolBindAdapter; ProtChars.PnPEventHandler = ProtocolPnPEvent; ProtChars.UnbindAdapterHandler = ProtocolUnbindAdapter; + ProtChars.UnloadHandler = LANUnregisterProtocol;
/* Try to register protocol */ NdisRegisterProtocol(&NdisStatus, @@ -1332,40 +1369,4 @@ return STATUS_SUCCESS; }
- -VOID LANUnregisterProtocol( - VOID) -/* - * FUNCTION: Unregisters this protocol driver with NDIS - * NOTES: Does not care wether we are already registered - */ -{ - TI_DbgPrint(DEBUG_DATALINK, ("Called.\n")); - - if (ProtocolRegistered) { - NDIS_STATUS NdisStatus; - PLIST_ENTRY CurrentEntry; - PLIST_ENTRY NextEntry; - PLAN_ADAPTER Current; - KIRQL OldIrql; - - TcpipAcquireSpinLock(&AdapterListLock, &OldIrql); - - /* Search the list and remove every adapter we find */ - CurrentEntry = AdapterListHead.Flink; - while (CurrentEntry != &AdapterListHead) { - NextEntry = CurrentEntry->Flink; - Current = CONTAINING_RECORD(CurrentEntry, LAN_ADAPTER, ListEntry); - /* Unregister it */ - LANUnregisterAdapter(Current); - CurrentEntry = NextEntry; - } - - TcpipReleaseSpinLock(&AdapterListLock, OldIrql); - - NdisDeregisterProtocol(&NdisStatus, NdisProtocolHandle); - ProtocolRegistered = FALSE; - } -} - /* EOF */
Modified: trunk/reactos/drivers/network/tcpip/include/lan.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/tcpip/inclu... ============================================================================== --- trunk/reactos/drivers/network/tcpip/include/lan.h [iso-8859-1] (original) +++ trunk/reactos/drivers/network/tcpip/include/lan.h [iso-8859-1] Wed May 6 03:43:18 2009 @@ -92,8 +92,8 @@ NTSTATUS LANRegisterProtocol( PNDIS_STRING Name);
-VOID LANUnregisterProtocol( - VOID); +VOID NTAPI +LANUnregisterProtocol(VOID);
VOID LANStartup(); VOID LANShutdown();