OID_RECEIVE_FILTER_FREE_QUEUE
NDIS-Protokolltreiber geben Objektbezeichner (Object Identifier, OID) an, um Anforderungen von OID_RECEIVE_FILTER_FREE_QUEUE festzulegen, um eine Empfangswarteschlange zu befreien.
Das InformationBuffer-Element der NDIS_OID_REQUEST-Struktur enthält einen Zeiger auf eine NDIS_RECEIVE_QUEUE_FREE_PARAMETERS-Struktur mit einem Warteschlangenbezeichner vom Typ NDIS_RECEIVE_QUEUE_ID.
Bemerkungen
Die OID-Setanforderung für OID_RECEIVE_FILTER_FREE_QUEUE ist optional für NDIS 6.20 und höhere Miniporttreiber. Dies ist für Miniporttreiber erforderlich, die die Warteschlangenschnittstelle des virtuellen Computers unterstützen.
Nachdem ein überlastende Treiber die OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID zum Zuweisen einer Empfangswarteschlange ausgibt, gibt er die OID_RECEIVE_FILTER_FREE_QUEUE OID aus, um die Empfangswarteschlange zu befreien.
Wenn NDIS einen Miniporttreiber anfordert, um eine VMQ-Empfangswarteschlange freizusetzen, führen Sie die folgenden Schritte aus:
Der Netzwerkadapter beendet die DMA-Übertragung von Daten, um Puffer zu empfangen, die der Empfangswarteschlange zugeordnet sind. Danach muss die Warteschlange in den DMA-Status Beendet wechseln. Der Netzwerkadapter hat wahrscheinlich die DMA-Aktivität beendet, als er die OID_RECEIVE_FILTER_CLEAR_FILTER OID-Anforderung empfangen hat, um den letzten Filter für die Empfangswarteschlange zu löschen.
Der Miniporttreiber generiert eine NDIS_STATUS_RECEIVE_QUEUE_STATE status Angabe, wobei der QueueState-Member der NDIS_RECEIVE_QUEUE_STATE-Struktur auf NdisReceiveQueueOperationalStateDmaStopped festgelegt ist, um NDIS darüber zu informieren, dass die DMA-Übertragung beendet wurde.
Der Miniporttreiber wartet, bis alle angegebenen Empfangspakete für diese Warteschlange an den Miniporttreiber zurückgegeben werden.
Der Miniporttreiber gibt den gesamten freigegebenen Arbeitsspeicher frei, den er für die Empfangspuffer des Netzwerkadapters zugewiesen hat, die der Warteschlange zugeordnet sind, indem er NdisFreeSharedMemory aufruft.
Der Miniporttreiber schließt die OID_RECEIVE_FILTER_FREE_QUEUE OID-Anforderung ab, um die Empfangswarteschlange zu befreien.
Miniporttreiber rufen die NdisFreeSharedMemory-Funktion auf, um freigegebenen Arbeitsspeicher für eine Warteschlange freizugeben. Wenn der Miniporttreiber den freigegebenen Arbeitsspeicher für eine nicht standardmäßige Warteschlange zugewiesen hat, gibt der Treiber den freigegebenen Speicher im Kontext der OID_RECEIVE_FILTER_FREE_QUEUE OID frei, während er die Warteschlange freigibt. Miniport-Treiber geben freigegebenen Arbeitsspeicher frei, den sie für die Standardwarteschlange im Kontext der MiniportHaltEx-Funktion zugewiesen haben.
Ein überlastender Treiber muss alle Filter freigeben, die er für eine Warteschlange festgelegt hat, bevor er die Warteschlange freigibt. Außerdem muss ein überlastende Treiber alle Empfangswarteschlangen freigeben, die er einem Netzwerkadapter zugeordnet hat, bevor er die NdisCloseAdapterEx-Funktion aufruft, um eine Bindung an den Netzwerkadapter zu schließen. NDIS gibt alle Warteschlangen frei, die auf einem Netzwerkadapter zugeordnet sind, bevor die MiniportHaltEx-Funktion des Miniporttreibers aufgerufen wird.
Rückgabestatuscodes
Die MiniportOidRequest-Funktion des Miniporttreibers gibt einen der folgenden Werte für diese Anforderung zurück:
Begriff | BESCHREIBUNG |
---|---|
NDIS_STATUS_SUCCESS |
Der Miniporttreiber hat die Anforderung erfolgreich abgeschlossen. |
NDIS_STATUS_PENDING |
Der Miniporttreiber führt die Anforderung asynchron aus. Nachdem der Miniporttreiber die gesamte Verarbeitung abgeschlossen hat, muss er die Anforderung erfolgreich ausführen, indem er die NdisMOidRequestComplete-Funktion aufruft und NDIS_STATUS_SUCCESS für den Status-Parameter übergibt. |
NDIS_STATUS_NOT_ACCEPTED |
Der Miniporttreiber wird zurückgesetzt. |
NDIS_STATUS_REQUEST_ABORTED |
Der Miniporttreiber hat die Verarbeitung der Anforderung beendet. Beispielsweise hat NDIS die MiniportResetEx-Funktion aufgerufen. |
NDIS gibt einen der folgenden status Codes für diese Anforderung zurück:
Statuscode | BESCHREIBUNG |
---|---|
NDIS_STATUS_SUCCESS |
Die angeforderte Warteschlange wurde erfolgreich freigegeben. |
NDIS_STATUS_PENDING |
Die Anforderung steht aus. NDIS übergibt den endgültigen status Code und ergebnisse an den OID-Anforderungsvervollständigungshandler für den Aufrufer, nachdem die Anforderung abgeschlossen ist. |
NDIS_STATUS_INVALID_PARAMETER |
Der Warteschlangenbezeichner ist ungültig. |
NDIS_STATUS_INVALID_LENGTH |
Der Informationspuffer ist zu kurz. NDIS legt die DATEN fest. METHOD_INFORMATION. BytesNeed-Member in der NDIS_OID_REQUEST-Struktur auf die erforderliche Mindestpuffergröße. |
Requirements (Anforderungen)
Version |
Unterstützt in NDIS 6.20 und höher. |
Header |
Ntddndis.h (include Ndis.h) |
Weitere Informationen
NDIS_RECEIVE_QUEUE_FREE_PARAMETERS