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
NET_BUFFER_LIST_RECEIVE_QUEUE_ID