Freigeben über


OID_RECEIVE_FILTER_ALLOCATE_QUEUE

Bei übermäßigen Treibern wird die Objekt-ID (OID)-Methodenanforderungen von OID_RECEIVE_FILTER_ALLOCATE_QUEUE, um eine Warteschlange zuzuweisen, die über einen anfänglichen Satz von Konfigurationsparametern verfügt.

Das InformationBuffer-element der NDIS_OID_REQUEST-Struktur enthält einen Zeiger auf eine NDIS_RECEIVE_QUEUE_PARAMETERS Struktur. Nach einer erfolgreichen Rückgabe aus der OID-Methodenanforderung enthält das InformationBuffer- Element der NDIS_OID_REQUEST-Struktur einen Zeiger auf eine NDIS_RECEIVE_QUEUE_PARAMETERS Struktur mit einem neuen Warteschlangenbezeichner.

Bemerkungen

Die OID-Methodenanforderung von OID_RECEIVE_FILTER_ALLOCATE_QUEUE ist optional für NDIS 6.20 und höhere Miniporttreiber. Es ist obligatorisch für Miniporttreiber, die die VMQ-Schnittstelle (Virtual Machine Queue) unterstützen.

Der übersteigende Treiber initialisiert die NDIS_RECEIVE_QUEUE_PARAMETERS Struktur mit der angeforderten Warteschlangenkonfiguration. NDIS weist dem QueueId Member der NDIS_RECEIVE_QUEUE_PARAMETERS Struktur einen Warteschlangenbezeichner zu und übergibt die Methodenanforderung an den Miniporttreiber.

Hinweis Der Überschreibtreiber kann die NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION und NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED Flags im Flags Member der NDIS_RECEIVE_QUEUE_PARAMETERS Struktur festlegen. Die anderen Flags werden nicht für die Warteschlangenzuweisung verwendet.

Nachdem ein Miniporttreiber eine OID-Anforderung von OID_RECEIVE_FILTER_ALLOCATE_QUEUE ausgestellt und erfolgreich behandelt wurde, befindet sich die Warteschlange im Zustand "Angehalten".

Der Überlauftreiber muss den Warteschlangenbezeichner verwenden, den NDIS in nachfolgenden OID-Anforderungen bereitstellt, z. B. zum Ändern der Warteschlangenparameter oder zum Freigeben der Warteschlange. Der Warteschlangenbezeichner ist auch in den Out-of-Band-Daten (OOB) aller NET_BUFFER_LIST Strukturen enthalten, die der Warteschlange zugeordnet sind. Treiber verwenden das NET_BUFFER_LIST_RECEIVE_QUEUE_ID-Makro, um den Warteschlangenbezeichner in einer NET_BUFFER_LIST Struktur abzurufen.

Wenn NDIS eine OID-Anforderung empfängt, um eine Empfangswarteschlange zuzuweisen, überprüft sie die Warteschlangenparameter. Nachdem NDIS die erforderlichen Ressourcen und den Warteschlangenbezeichner zugeordnet hat, sendet sie die OID-Anforderung an den zugrunde liegenden Miniporttreiber. Der Warteschlangenbezeichner ist für den zugeordneten Netzwerkadapter eindeutig.

Wenn der Miniporttreiber die erforderlichen Software- und Hardwareressourcen für die Empfangswarteschlange erfolgreich zuordnen kann, wird die OID-Anforderung durch Zurückgeben NDIS_STATUS_SUCCESSabgeschlossen.

Der Miniporttreiber muss die Warteschlangen-IDs für die zugewiesenen Empfangswarteschlangen beibehalten. NDIS verwendet den Warteschlangenbezeichner einer Empfangswarteschlange für nachfolgende Anrufe an den Miniporttreiber, um einen Empfangsfilter für die Empfangswarteschlange festzulegen, die Parameter der Empfangswarteschlange zu ändern oder die Empfangswarteschlange freizustellen.

Nachdem ein übermäßiger Treiber eine oder mehrere Empfangswarteschlangen zuweist und optional die anfänglichen Filter festlegt, muss er OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID-Anforderungen ausgeben, um den Miniporttreiber darüber zu informieren, dass die Zuordnung für den aktuellen Batch von Empfangswarteschlangen abgeschlossen ist.

Der Miniporttreiber darf keine Pakete in einer Empfangswarteschlange aufbewahren, wenn keine Filter für diese Warteschlange festgelegt sind. Wenn eine Warteschlange nie Filter festgelegt hat oder alle Filter gelöscht wurden, sollte die Warteschlange leer sein, und alle Pakete sollten verworfen werden. Das heißt, die Pakete werden nicht im Treiberstapel angegeben oder in der Warteschlange aufbewahrt.

Überlastungstreiber verwenden OID-Anforderungen von OID_RECEIVE_FILTER_FREE_QUEUE, um Warteschlangen frei zu geben, die sie zuordnen.

Rückgabestatuscodes

Entweder NDIS oder der Miniporttreiber gibt einen der folgenden Statuscodes für die OID-Methodenanforderung von OID_RECEIVE_FILTER_ALLOCATE_QUEUE zurück.

Statuscode Beschreibung

NDIS_STATUS_SUCCESS

Die Warteschlange wurde erfolgreich zugewiesen. Der Informationspuffer enthält die aktualisierte NDIS_RECEIVE_QUEUE_PARAMETERS Struktur.

NDIS_STATUS_PENDING

Die Anforderung steht aus. Der letzte Statuscode und die Ergebnisse werden an einen OID-Anforderungsabschlusshandler des Aufrufers übergeben.

NDIS_STATUS_INVALID_PARAMETER

Mindestens einer der Parameter, die der bereitgestellte Überlauftreiber war ungültig.

NDIS_STATUS_INVALID_LENGTH

Der Informationspuffer war zu kurz. NDIS legt den DATA-fest.METHOD_INFORMATION.BytesNeededed Member in der NDIS_OID_REQUEST Struktur auf die erforderliche Mindestpuffergröße.

NDIS_STATUS_NOT_SUPPORTED

Die NDIS-Version des Miniporttreibers ist älter als Version 6.20.

NDIS_STATUS_FAILURE

Fehler bei der Anforderung aus anderen Gründen.

Anforderungen

Version

Unterstützt in NDIS 6.20 und höher.

Kopfball

Ntddndis.h (include Ndis.h)

Siehe auch

NDIS_OID_REQUEST

NET_BUFFER_LIST

NET_BUFFER_LIST_RECEIVE_QUEUE_ID

OID_RECEIVE_FILTER_FREE_QUEUE

OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE

NDIS_RECEIVE_QUEUE_PARAMETERS