- Refresh the protocol bindings after a new miniport is added
- Adapters added after boot work now
- One step closer to Live CD networking

svn path=/trunk/; revision=48193
This commit is contained in:
Cameron Gutman 2010-07-22 19:01:49 +00:00
parent 135986ec2e
commit 92d6d7210c
3 changed files with 20 additions and 0 deletions

View file

@ -69,4 +69,8 @@ NdisIPnPCancelStopDevice(
NDIS_STATUS
proSendPacketToMiniport(PLOGICAL_ADAPTER Adapter, PNDIS_PACKET Packet);
VOID
NTAPI
ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics);
/* EOF */

View file

@ -1778,6 +1778,8 @@ NdisIPnPStartDevice(
LARGE_INTEGER Timeout;
UINT MaxMulticastAddresses;
ULONG BytesWritten;
PLIST_ENTRY CurrentEntry;
PPROTOCOL_BINDING ProtocolBinding;
/*
* Prepare wrapper context used by HW and configuration routines.
@ -2056,6 +2058,17 @@ NdisIPnPStartDevice(
/* Put adapter in adapter list for this miniport */
ExInterlockedInsertTailList(&Adapter->NdisMiniportBlock.DriverHandle->DeviceList, &Adapter->MiniportListEntry, &Adapter->NdisMiniportBlock.DriverHandle->Lock);
/* Refresh bindings for all protocols */
CurrentEntry = ProtocolListHead.Flink;
while (CurrentEntry != &ProtocolListHead)
{
ProtocolBinding = CONTAINING_RECORD(CurrentEntry, PROTOCOL_BINDING, ListEntry);
ndisBindMiniportsToProtocol(&NdisStatus, &ProtocolBinding->Chars);
CurrentEntry = CurrentEntry->Flink;
}
return STATUS_SUCCESS;
}

View file

@ -1002,7 +1002,10 @@ ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PNDIS_PROTOCOL_CHARACTER
{
BIND_HANDLER BindHandler = ProtocolCharacteristics->BindAdapterHandler;
if(BindHandler)
{
BindHandler(Status, BindContext, &DeviceName, &RegistryPath, 0);
NDIS_DbgPrint(MIN_TRACE, ("%wZ's BindAdapter handler returned 0x%x for %wZ\n", &ProtocolCharacteristics->Name, *Status, &DeviceName));
}
else
NDIS_DbgPrint(MIN_TRACE, ("No protocol bind handler specified\n"));
}