NdisDirectOidRequest-Funktion (ndis.h)
Die NdisDirectOidRequest-Funktion leitet eine direkte OID-Anforderung an die zugrunde liegenden Treiber weiter, um die Funktionen oder status eines Adapters abzufragen oder den Status eines Adapters festzulegen.
Syntax
NDIS_STATUS NdisDirectOidRequest(
[in] NDIS_HANDLE NdisBindingHandle,
[in] PNDIS_OID_REQUEST OidRequest
);
Parameter
[in] NdisBindingHandle
Das Handle, das die NdisOpenAdapterEx-Funktion zurückgibt, das den Ziel-Miniportadapter für die Bindung identifiziert.
[in] OidRequest
Ein Zeiger auf eine NDIS_OID_REQUEST-Struktur, die den Vorgang angibt, der mit einem bestimmten 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, welche NDIS_STATUS_XXX-CodeNdisDirectOidRequest zurückgibt, aber in der Regel handelt es sich um einen der folgenden Werte:
Rückgabecode | Beschreibung |
---|---|
|
Der Anforderungsvorgang wurde erfolgreich abgeschlossen. |
|
Die Anforderung wird asynchron verarbeitet, und NDIS ruft die des Aufrufers auf. ProtocolDirectOidRequestComplete-Funktion , wenn die Anforderung abgeschlossen ist. |
|
Der OID_Xxx-Code , der im Oid-Member des NDIS_OID_REQUEST strukturierten Puffers bei OidRequest angegeben wurde, war ungültig oder vom zugrunde liegenden Treiber nicht unterstützt. |
|
Der Wert, der im InformationBufferLength-Member des NDIS_OID_REQUEST strukturierten Puffers bei OidRequest angegeben wurde, entsprach nicht den Anforderungen für den angegebenen OID_Xxx-Code . Wenn der Informationspuffer zu klein war, enthält das BytesNeeded-Element bei der Rückgabe von NdisDirectOidRequest den richtigen Wert für InformationBufferLength. |
|
Die Daten, die bei InformationBuffer in der angegebenen NDIS_OID_REQUEST-Struktur bereitgestellt wurden, waren für den angegebenen OID_Xxx-Code ungültig. |
|
Der zugrunde liegende Treiber unterstützt den angeforderten Vorgang nicht. Für NdisDirectOidRequest kann NDIS auch diese status zurückgeben, wenn der aufrufende Treiber keine registriert hat. ProtocolDirectOidRequestComplete-Funktion . |
|
Die Anforderung konnte aufgrund eines Ressourcenmangels nicht erfüllt werden. In der Regel gibt dieser Rückgabewert an, dass der Versuch, Arbeitsspeicher zuzuweisen, nicht unbedingt darauf hinweist, dass dieselbe Anforderung, die später übermittelt wird, aus demselben Grund fehlschlägt. |
|
Der zugrunde liegende Treiber hat den angeforderten Vorgang versucht, in der Regel auf einer NIC festgelegt, aber er ist fehlgeschlagen. Beispielsweise kann ein Versuch, zu viele Multicastadressen festzulegen, dazu führen, dass dieser Wert zurückgegeben wird. |
|
Beim zugrunde liegenden Treiber ist der angeforderte Vorgang fehlgeschlagen, da ein Schließenvorgang ausgeführt wird. |
|
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 eine Zurücksetzung ausgeführt wird. Dieser Rückgabewert gibt nicht unbedingt an, dass dieselbe Anforderung, die später übermittelt wird, aus demselben Grund fehlschlägt. |
|
Dieser Wert ist in der Regel ein nicht bestimmter Standardwert, der zurückgegeben wird, wenn keiner der spezifischeren NDIS_STATUS_Xxx-Werte dazu geführt hat, dass der zugrunde liegende Treiber die Anforderung fehlschlägt. |
Hinweise
Die NdisDirectOidRequest-Funktion kann nicht für allgemeine OID-Anforderungen verwendet werden. Verwenden Sie für allgemeine OID-Anforderungen stattdessen die Funktion NdisOidRequest . NdisDirectOidRequest kann nur für OIDs verwendet werden, die von NDIS für die Verwendung mit der direkten OID-Schnittstelle unterstützt werden. Beispielsweise können die folgenden OIDs verwendet werden:
OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SAEin Protokolltreiber muss genügend Arbeitsspeicher zuweisen, um den Informationspuffer zu speichern, der der angegebenen OID zugeordnet ist. Der Treiber muss auch den Puffer am OidRequest-Parameter zuordnen und einrichten, bevor er NdisDirectOidRequest aufruft. Beide Puffer müssen aus einem Nicht-Auslagerpool zugeordnet werden, da der zugrunde liegende Treiber bei ausgelöstem IRQL ausgeführt wird, während die Anforderung verarbeitet wird.
NdisDirectOidRequest leitet eine Anforderung an zugrunde liegende Treiber weiter oder verarbeitet die Anforderung selbst. Wenn der nächstniedrige Treiber ein NDIS-Zwischentreiber ist, kann der Zwischentreiber NdisDirectOidRequest mit einer eigenen OID-spezifischen Anforderung aufrufen, bevor die Anforderung abgeschlossen wird, die der Treiber der höheren Ebene ursprünglich übermittelt hat.
Ein Treiber, der NdisDirectOidRequest aufruft, muss die ProtocolDirectOidRequestComplete-Funktion .
Die direkte OID-Anforderungsschnittstelle ähnelt der allgemeinen OID-Anforderungsschnittstelle. Weitere Informationen zum Ausgeben allgemeiner Anforderungen finden Sie unter NdisOidRequest.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt in NDIS 6.1 und höher. |
Zielplattform | Desktop |
Kopfzeile | ndis.h (include Ndis.h) |
Bibliothek | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |