NdisOidRequest-Funktion (ndis.h)

Die NdisOidRequest-Funktion leitet eine Anforderung an die zugrunde liegenden Treiber weiter, um die Funktionen oder status eines Adapters abzufragen oder den Status eines Adapters festzulegen.

Syntax

NDIS_STATUS NdisOidRequest(
  [in] NDIS_HANDLE       NdisBindingHandle,
  [in] PNDIS_OID_REQUEST OidRequest
);

Parameter

[in] NdisBindingHandle

Das handle, das von der NdisOpenAdapterEx-Funktion zurückgegeben wird, die den Zieladapter für die Bindung identifiziert.

[in] OidRequest

Ein Zeiger auf eine NDIS_OID_REQUEST-Struktur, der den Vorgang angibt, der mit einem angegebenen OID_XXX-Code angefordert wird, um entweder die status eines Adapters abzufragen oder den Status eines Adapters festzulegen.

Rückgabewert

Der zugrunde liegende Treiber bestimmt, welcher NDIS_STATUS_XXX-CodeNdisOidRequest zurückgibt, es handelt sich jedoch in der Regel um einen der folgenden Werte:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS
Der Anforderungsvorgang wurde erfolgreich abgeschlossen.
NDIS_STATUS_PENDING
Die Anforderung wird asynchron behandelt, und NDIS ruft den Aufrufer auf. ProtocolOidRequestComplete-Funktion , wenn die Anforderung abgeschlossen ist.
NDIS_STATUS_INVALID_OID
Der OID_XXX-Code , der im Oid-Member des NDIS_OID_REQUEST strukturierten Puffers bei OidRequest angegeben wird, ist ungültig oder wird vom zugrunde liegenden Treiber nicht unterstützt.
NDIS_STATUS_INVALID_LENGTH oder NDIS_STATUS_BUFFER_TOO_SHORT
Der im InformationBufferLength-Member des NDIS_OID_REQUEST strukturierten Puffers bei OidRequest angegebene Wert entspricht nicht den Anforderungen für den angegebenen OID_XXX-Code . Wenn der Informationspuffer zu klein ist, enthält das BytesNeeded-Element den richtigen Wert für InformationBufferLength bei der Rückgabe von NdisOidRequest.
NDIS_STATUS_INVALID_DATA
Die bei InformationBuffer in der angegebenen NDIS_OID_REQUEST-Struktur bereitgestellten Daten sind für den angegebenen OID_XXX-Code ungültig.
NDIS_STATUS_NOT_SUPPORTED oder NDIS_STATUS_NOT_RECOGNIZED
Der zugrunde liegende Treiber unterstützt den angeforderten Vorgang nicht.
NDIS_STATUS_RESOURCES
Die Anforderung konnte aufgrund einer Ressourcenknappheit nicht erfüllt werden. In der Regel gibt dieser Rückgabewert an, dass der Versuch, Arbeitsspeicher zuzuweisen, fehlgeschlagen ist, aber nicht notwendigerweise, dass die gleiche Anforderung, die später übermittelt wird, aus demselben Grund fehlschlägt.
NDIS_STATUS_NOT_ACCEPTED
Der zugrunde liegende Treiber hat den angeforderten Vorgang versucht, in der Regel ein Satz für eine NIC, aber fehler. Beispielsweise kann ein Versuch, zu viele Multicastadressen festzulegen, dazu führen, dass dieser Wert zurückgegeben wird.
NDIS_STATUS_CLOSING oder NDIS_STATUS_CLOSING_INDICATING
Beim zugrunde liegenden Treiber ist der angeforderte Vorgang fehlgeschlagen, da ein Schließenvorgang ausgeführt wird.
NDIS_STATUS_RESET_IN_PROGRESS
Der zugrunde liegende Miniporttreiber kann die Anforderung derzeit nicht erfüllen, da die betroffene NIC derzeit zurückgesetzt wird. Die ProtocolStatusEx-Funktion des Aufrufers wurde oder wird mit NDIS_STATUS_RESET_START aufgerufen, um anzugeben, dass ein Zurücksetzen ausgeführt wird. Dieser Rückgabewert weist nicht unbedingt darauf hin, dass dieselbe Anforderung, die später gesendet wird, aus demselben Grund fehlschlägt.
NDIS_STATUS_FAILURE
Dieser Wert ist in der Regel ein unspezifischer Standardwert, der zurückgegeben wird, wenn keiner der spezifischeren NDIS_STATUS_XXX verursacht hat, dass der zugrunde liegende Treiber die Anforderung fehlschlägt.

Hinweise

Ein Protokolltreiber muss genügend Arbeitsspeicher zuweisen, um den Informationspuffer zu speichern, der der angegebenen OID zugeordnet ist. Der Treiber muss auch den Puffer bei OidRequest zuordnen und einrichten, bevor er NdisOidRequest aufruft. Beide Puffer müssen aus einem nicht ausgestellten Pool zugeordnet werden, da der zugrunde liegende Treiber bei ausgelöstem IRQL ausgeführt wird, während die Anforderung verarbeitet wird.

NdisOidRequest leitet eine Anforderung an zugrunde liegende Treiber weiter oder verarbeitet die Anforderung selbst. Wenn es sich beim nächstniedrigen Treiber um einen NDIS-Zwischentreiber handelt, kann er NdisOidRequest mit einer eigenen OID-spezifischen Anforderung aufrufen, bevor die anforderung abgeschlossen wird, die ursprünglich vom übergeordneten Treiber übermittelt wurde.

Einige zurückgegebene Fehler können wie folgt wiederhergestellt werden:

Das heißt, ein Treiber kann das Paket bei OidRequest entsprechend ändern, um den OID_XXX-Code oder die Größe oder den Inhalt des Puffers bei InformationBuffer zu korrigieren und das Anforderungspaket erneut an NdisOidRequest zu übermitteln. Dasselbe Paket kann bei der erneuten Übermittlung an NdisOidRequest erfüllt werden, wenn der ursprüngliche Aufruf auf eine laufende Zurücksetzung hinweist oder dass eine Ressourcenknappheit, die möglicherweise vorübergehend ist, die Ausführung dieser Anforderung verhindert hat.

Die NDIS-Bibliothek verwaltet Bindungen für zugrunde liegende Miniporttreiber. NDIS kann Informationen für bindungsspezifische Abfragen zurückgeben, wenn eine bestimmte OID einem systemdefiniertem Mitteltyp zugeordnet ist, für den das System eine Filterbibliothek bereitstellt.

Weitere Informationen zu den allgemeinen und medienspezifischen OIDs und den zugehörigen Informationspuffern finden Sie unter NDIS-OIDs.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Desktop
Kopfzeile ndis.h (einschließlich Ndis.h)
Bibliothek Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_OID_Function(ndis)

Weitere Informationen

NDIS_OID_REQUEST

NdisOpenAdapterEx

ProtocolOidRequestComplete

ProtocolStatusEx