Freigeben über


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:

  1. 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.

  2. 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.

  3. Der Miniporttreiber wartet, bis alle angegebenen Empfangspakete für diese Warteschlange an den Miniporttreiber zurückgegeben werden.

  4. 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.

  5. 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

MiniportHaltEx

NDIS_OID_REQUEST

NDIS_RECEIVE_QUEUE_FREE_PARAMETERS

NDIS_STATUS_RECEIVE_QUEUE_STATE

NdisCloseAdapterEx

NdisFreeSharedMemory

OID_RECEIVE_FILTER_ALLOCATE_QUEUE