Author: cgutman Date: Thu Nov 13 18:54:26 2008 New Revision: 37348
URL: http://svn.reactos.org/svn/reactos?rev=37348&view=rev Log: - Fix protocol binding
Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c
Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/netw... ============================================================================== --- branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c [iso-8859-1] (original) +++ branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c [iso-8859-1] Thu Nov 13 18:54:26 2008 @@ -610,7 +610,8 @@ }
VOID -ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PPROTOCOL_BINDING Protocol, IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics) +NTAPI +ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics) { /* * bind the protocol to all of its miniports @@ -845,13 +846,19 @@
InitializeListHead(&Protocol->AdapterListHead);
- ndisBindMiniportsToProtocol(Status, Protocol, ProtocolCharacteristics); + /* We must set this before the call to ndisBindMiniportsToProtocol because the protocol's + * BindAdapter handler might need it */ + + *NdisProtocolHandle = Protocol; + + ndisBindMiniportsToProtocol(Status, &Protocol->Chars);
if (*Status == NDIS_STATUS_SUCCESS) { ExInterlockedInsertTailList(&ProtocolListHead, &Protocol->ListEntry, &ProtocolListLock); - *NdisProtocolHandle = Protocol; - } else + } else { ExFreePool(Protocol); + *NdisProtocolHandle = NULL; + } }
@@ -970,7 +977,7 @@ PPROTOCOL_BINDING Protocol = NdisProtocolHandle; NDIS_STATUS NdisStatus;
- ndisBindMiniportsToProtocol(&NdisStatus, Protocol, &Protocol->Chars); + ndisBindMiniportsToProtocol(&NdisStatus, &Protocol->Chars); }
/* EOF */