diff --git a/drivers/network/ndis/ndis/miniport.c b/drivers/network/ndis/ndis/miniport.c index 54914bed3cb..392390433e1 100644 --- a/drivers/network/ndis/ndis/miniport.c +++ b/drivers/network/ndis/ndis/miniport.c @@ -1052,7 +1052,29 @@ MiniStatus( IN PVOID StatusBuffer, IN UINT StatusBufferSize) { - UNIMPLEMENTED + PLOGICAL_ADAPTER Adapter = MiniportHandle; + PLIST_ENTRY CurrentEntry; + PADAPTER_BINDING AdapterBinding; + KIRQL OldIrql; + + KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + + CurrentEntry = Adapter->ProtocolListHead.Flink; + + while (CurrentEntry != &Adapter->ProtocolListHead) + { + AdapterBinding = CONTAINING_RECORD(CurrentEntry, ADAPTER_BINDING, AdapterListEntry); + + (*AdapterBinding->ProtocolBinding->Chars.StatusHandler)( + AdapterBinding->NdisOpenBlock.ProtocolBindingContext, + GeneralStatus, + StatusBuffer, + StatusBufferSize); + + CurrentEntry = CurrentEntry->Flink; + } + + KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); } @@ -1061,7 +1083,26 @@ NTAPI MiniStatusComplete( IN NDIS_HANDLE MiniportAdapterHandle) { - UNIMPLEMENTED + PLOGICAL_ADAPTER Adapter = MiniportAdapterHandle; + PLIST_ENTRY CurrentEntry; + PADAPTER_BINDING AdapterBinding; + KIRQL OldIrql; + + KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + + CurrentEntry = Adapter->ProtocolListHead.Flink; + + while (CurrentEntry != &Adapter->ProtocolListHead) + { + AdapterBinding = CONTAINING_RECORD(CurrentEntry, ADAPTER_BINDING, AdapterListEntry); + + (*AdapterBinding->ProtocolBinding->Chars.StatusCompleteHandler)( + AdapterBinding->NdisOpenBlock.ProtocolBindingContext); + + CurrentEntry = CurrentEntry->Flink; + } + + KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); } @@ -1137,29 +1178,7 @@ NdisMIndicateStatus( IN PVOID StatusBuffer, IN UINT StatusBufferSize) { - PLOGICAL_ADAPTER Adapter = MiniportAdapterHandle; - PLIST_ENTRY CurrentEntry; - PADAPTER_BINDING AdapterBinding; - KIRQL OldIrql; - - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); - - CurrentEntry = Adapter->ProtocolListHead.Flink; - - while (CurrentEntry != &Adapter->ProtocolListHead) - { - AdapterBinding = CONTAINING_RECORD(CurrentEntry, ADAPTER_BINDING, AdapterListEntry); - - (*AdapterBinding->ProtocolBinding->Chars.StatusHandler)( - AdapterBinding->NdisOpenBlock.ProtocolBindingContext, - GeneralStatus, - StatusBuffer, - StatusBufferSize); - - CurrentEntry = CurrentEntry->Flink; - } - - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + MiniStatus(MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize); } /* @@ -1171,26 +1190,7 @@ EXPORT NdisMIndicateStatusComplete( IN NDIS_HANDLE MiniportAdapterHandle) { - PLOGICAL_ADAPTER Adapter = MiniportAdapterHandle; - PLIST_ENTRY CurrentEntry; - PADAPTER_BINDING AdapterBinding; - KIRQL OldIrql; - - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); - - CurrentEntry = Adapter->ProtocolListHead.Flink; - - while (CurrentEntry != &Adapter->ProtocolListHead) - { - AdapterBinding = CONTAINING_RECORD(CurrentEntry, ADAPTER_BINDING, AdapterListEntry); - - (*AdapterBinding->ProtocolBinding->Chars.StatusCompleteHandler)( - AdapterBinding->NdisOpenBlock.ProtocolBindingContext); - - CurrentEntry = CurrentEntry->Flink; - } - - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + MiniStatusComplete(MiniportAdapterHandle); }