OID_RECEIVE_FILTER_ALLOCATE_QUEUE

Überlastende Treiber geben OID-Methodenanforderungen (Object Identifier) von OID_RECEIVE_FILTER_ALLOCATE_QUEUE aus, 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 von 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. Dies ist für Miniporttreiber erforderlich, die die VMQ-Schnittstelle (VMQ) unterstützen.

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

Hinweis Der überlastende Treiber kann die NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION - und NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED-Flags im Flags-Element der NDIS_RECEIVE_QUEUE_PARAMETERS-Struktur festlegen. Die anderen Flags werden nicht für die Warteschlangenzuordnung verwendet.

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

Der überlastende Treiber 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) für alle NET_BUFFER_LIST Strukturen enthalten, die der Warteschlange zugeordnet sind. Treiber verwenden das makro NET_BUFFER_LIST_RECEIVE_QUEUE_ID , um den Warteschlangenbezeichner in einer NET_BUFFER_LIST-Struktur abzurufen.

Wenn NDIS eine OID-Anforderung empfängt, um eine Empfangswarteschlange zuzuordnen, werden die Warteschlangenparameter überprüft. Nachdem NDIS die erforderlichen Ressourcen und den Warteschlangenbezeichner zugewiesen hat, sendet es 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, schließt er die OID-Anforderung ab, indem er NDIS_STATUS_SUCCESS zurückgibt.

Der Miniporttreiber muss die Warteschlangenbezeichner für die zugeordneten Empfangswarteschlangen beibehalten. NDIS verwendet den Warteschlangenbezeichner einer Empfangswarteschlange für nachfolgende Aufrufe des Miniporttreibers, um einen Empfangsfilter für die Empfangswarteschlange festzulegen, die Empfangswarteschlangenparameter zu ändern oder die Empfangswarteschlange freizusetzen.

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

Der Miniporttreiber darf keine Pakete in einer Empfangswarteschlange aufbewahren, wenn keine Filter für diese Warteschlange festgelegt sind. Wenn für eine Warteschlange nie Filter festgelegt wurden 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.

Überlastende Treiber verwenden OID-Anforderungen von OID_RECEIVE_FILTER_FREE_QUEUE , um die von ihnen zugewiesenen Warteschlangen zu befreien.

Rückgabestatuscodes

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

Statuscode BESCHREIBUNG

NDIS_STATUS_SUCCESS

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

NDIS_STATUS_PENDING

Die Anforderung steht aus. Der endgültige status Code und die Ergebnisse werden an einen OID-Anforderungsabschlusshandler des Aufrufers übergeben.

NDIS_STATUS_INVALID_PARAMETER

Mindestens ein Parameter, den der überlastende Treiber angegeben hat, war ungültig.

NDIS_STATUS_INVALID_LENGTH

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

NDIS_STATUS_NOT_SUPPORTED

Die NDIS-Version des Miniporttreibers ist früher als Version 6.20.

NDIS_STATUS_FAILURE

Die Anforderung ist aus anderen Gründen fehlgeschlagen.

Requirements (Anforderungen)

Version

Unterstützt in NDIS 6.20 und höher.

Header

Ntddndis.h (include Ndis.h)

Weitere Informationen

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