Freigeben über


MINIPORT_DIRECT_OID_REQUEST Rückruffunktion (ndis.h)

NDIS ruft die MiniportDirectOidRequest Funktion eines Miniporttreibers auf, um eine direkte OID-Anforderung zum Abfragen oder Festlegen von Informationen im Treiber zu verarbeiten.

Note You must declare the function by using the MINIPORT_DIRECT_OID_REQUEST type. Weitere Informationen finden Sie im folgenden Abschnitt "Beispiele".
 

Syntax

MINIPORT_DIRECT_OID_REQUEST MiniportDirectOidRequest;

NDIS_STATUS MiniportDirectOidRequest(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNDIS_OID_REQUEST OidRequest
)
{...}

Parameter

[in] MiniportAdapterContext

Ein Handle zu einem Kontextbereich, den der Miniporttreiber in seiner MiniportInitializeEx--Funktion zugewiesen hat. Der Miniporttreiber verwendet diesen Kontextbereich, um Zustandsinformationen für einen Miniportadapter beizubehalten.

[in] OidRequest

Ein Zeiger auf eine NDIS_OID_REQUEST Struktur, die sowohl den Puffer als auch das Anforderungspaket für den Miniporttreiber enthält, der verarbeitet werden soll. Je nach Anforderung gibt der Treiber angeforderte Informationen in der bereitgestellten Struktur zurück.

Rückgabewert

MiniportDirectOidRequest- kann einen der folgenden Statuswerte zurückgeben:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS
Der Miniporttreiber hat die Daten wie angefordert festgelegt oder abgerufen.
NDIS_STATUS_PENDING
Der Miniporttreiber führt die Anforderung asynchron aus. Nachdem der Miniporttreiber die gesamte Verarbeitung abgeschlossen hat, muss er die NdisMDirectOidRequestComplete Funktion, um NDIS darüber zu informieren, dass die Anforderung abgeschlossen ist.
NDIS_STATUS_INVALID_OID
Die anforderung, die OidRequest angegeben wurde, war ungültig oder nicht erkannt.
NDIS_STATUS_NOT_SUPPORTED
Die Anforderung, die OidRequest angegeben wurde, wurde erkannt, aber der Miniporttreiber unterstützt sie nicht.
NDIS_STATUS_BUFFER_TOO_SHORT
Der Puffer, der OidRequest Lieferungen war zu klein, um die angeforderten Daten aufzunehmen.
NDIS_STATUS_INVALID_LENGTH
Der wert, der im InformationBufferLength Member der NDIS_OID_REQUEST Struktur bei OidRequest- angegeben wurde, ist für den angegebenen OID_Xxx- Code falsch.
NDIS_STATUS_INVALID_DATA
Mindestens einer der Parameter, die für die Anforderung bei OidRequest- angegeben wurden, waren ungültig.
NDIS_STATUS_NOT_ACCEPTED
Nach dem Aufrufen der MiniportDevicePnPEventNotify Funktion, um eine Überraschungsentfernung anzugeben, hat NDIS die MiniportHaltEx Funktion des Fahrers aufgerufen. Wenn der Treiber OID-Anforderungen erhalten hat, bevor NDIS MiniportHaltExaufruft, sollte er diese Anforderungen sofort mit dem Statuswert NDIS_STATUS_NOT_ACCEPTED abschließen.
NDIS_STATUS_REQUEST_ABORTED
Der Miniporttreiber hat die Verarbeitung der Anforderung beendet. Beispielsweise hat NDIS die funktion MiniportResetEx aufgerufen.
NDIS_STATUS_INDICATION_REQUIRED
Der Miniporttreiber stellt einen OID-Abschlussstatus mit einer nachfolgenden Statusanzeige bereit. Ein Miniporttreiber kann nicht NDIS_STATUS_INDICATION_REQUIRED zurückgeben, es sei denn, der bestimmte OID lässt ihn zu. Informationen dazu, ob dieser Status zulässig ist, finden Sie auf der OID-Referenzseite.To determine if this status is allowed, see the OID reference page.. Weitere Informationen zu NDIS_STATUS_INDICATION_REQUIRED finden Sie unter NDIS_OID_REQUEST und NDIS_STATUS_INDICATION.

Bemerkungen

MiniportDirectOidRequest ist eine optionale Funktion. Ein Miniporttreiber registriert diese Funktion, wenn er direkte OID-Anforderungen verarbeitet. Ein Treiber gibt den MiniportDirectOidRequest Einstiegspunkt an, wenn er die NdisMRegisterMiniportDriver Funktion. Ein Miniporttreiber, der die MiniportCancelDirectOidRequest Funktion muss auch MiniportDirectOidRequestregistrieren.

NDIS ruft die MiniportDirectOidRequest Funktion entweder im eigenen Auftrag oder im Namen eines gebundenen Protokolltreibers auf, der die NdisDirectOidRequest-Funktion aufgerufen hat. Miniport-Treiber sollten die Anforderung untersuchen, die an der OidRequest Parameter bereitgestellt wird, und die angeforderte Aktion ausführen.

Beachten Sie, dass NDIS den OID-spezifischen Inhalt bei OidRequest-nicht überprüft. Daher muss der Treiber selbst diese Inhalte überprüfen. Wenn der Treiber feststellt, dass der festzulegende Wert außerhalb der Grenzen liegt, sollte die Anforderung fehlschlagen und NDIS_STATUS_INVALID_DATA zurückgeben.

NDIS serialisiert keine Anforderungen, die an MiniportDirectOidRequest mit anderen OID-Anforderungen gesendet werden. Der Miniporttreiber muss in der Lage sein, mehrere Aufrufe an MiniportDirectOidRequest zu verarbeiten, wenn andere Anforderungen, die an MiniportOidRequest oder MiniportDirectOidRequest gesendet werden, hervorragend sind.

Hinweis Die NDIS-Check-for-Hang-Logik setzt keinen Miniporttreiber zurück, der nicht reagiert, wenn der Miniporttreiber im Kontext des MiniportOidRequest Aufrufs wartet. Daher sollten Miniporttreiber nicht warten, bis Hardwarevorgänge im Kontext des MiniportOidRequest Aufrufs abgeschlossen sind. Stattdessen kann der Treiber NDIS_STATUS_PENDING zurückgeben und eine Arbeitsaufgabe in die Warteschlange stellen.
 
NDIS ruft MiniportDirectOidRequest- bei IRQL-<= DISPATCH_LEVEL auf.

beispiele für

Um eine MiniportDirectOidRequest--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der Funktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Funktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine MiniportDirectOidRequest--Funktion zu definieren, die den Namen "MyDirectOidRequest" hat, verwenden Sie den MINIPORT_DIRECT_OID_REQUEST Typ, wie in diesem Codebeispiel gezeigt:

MINIPORT_DIRECT_OID_REQUEST MyDirectOidRequest;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
NDIS_STATUS
 MyDirectOidRequest(
    NDIS_HANDLE  MiniportAdapterContext,
    PNDIS_OID_REQUEST  OidRequest
    )
  {...}

Der MINIPORT_DIRECT_OID_REQUEST Funktionstyp wird in der Ndis.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp MINIPORT_DIRECT_OID_REQUEST in der Headerdatei angewendet werden, verwendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.

Informationen zu Use_decl_annotationsfinden Sie unter Annotating Function Behavior.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in NDIS 6.1 und höher.
Zielplattform- Fenster
Header- ndis.h (include Ndis.h)
IRQL- <= DISPATCH_LEVEL

Siehe auch

MiniportCancelDirectOidRequest MiniportDevicePnPEventNotify

MiniportDirectOidRequest-

MiniportHaltEx

MiniportInitializeEx-

MiniportOidRequest-

MiniportResetEx-

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisDirectOidRequest

NdisMDirectOidRequestComplete-

NdisMRegisterMiniportDriver-