MINIPORT_OID_REQUEST Rückruffunktion (ndis.h)

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

Hinweis Sie müssen die Funktion mit dem MINIPORT_OID_REQUEST-Typ deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt Beispiele.
 

Syntax

MINIPORT_OID_REQUEST MiniportOidRequest;

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

Parameter

[in] MiniportAdapterContext

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

[in] OidRequest

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

Rückgabewert

MiniportOidRequest kann einen der folgenden status-Werte zurückgeben:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS
Der Miniporttreiber hat die Daten entweder 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 NdisMOidRequestComplete-Funktion , um NDIS darüber zu informieren, dass die Anforderung abgeschlossen ist.
NDIS_STATUS_INVALID_OID
Die in OidRequest angegebene Anforderung ist ungültig oder nicht erkannt.
NDIS_STATUS_NOT_SUPPORTED
Die in OidRequest angegebene Anforderung wird vom Miniporttreiber erkannt, aber nicht unterstützt.
NDIS_STATUS_BUFFER_TOO_SHORT
Der Puffer, der bei OidRequest bereitgestellt wird, ist zu klein, um die angeforderten Daten aufzunehmen.
NDIS_STATUS_INVALID_LENGTH
Der im InformationBufferLength-Member der NDIS_OID_REQUEST-Struktur bei OidRequest angegebene Wert ist für den angegebenen OID_ XXX-Code falsch.
NDIS_STATUS_INVALID_DATA
Mindestens ein Parameter, der für die Anforderung bei OidRequest angegeben ist, ist ungültig.
NDIS_STATUS_NOT_ACCEPTED
Nach dem Aufruf des MiniportDevicePnPEventNotify-Funktion , um eine überraschende Entfernung anzuzeigen, ruft NDIS die MiniportHaltEx-Funktion des Treibers auf. Wenn der Treiber OID-Anforderungen empfängt, bevor NDIS MiniportHaltEx aufruft, sollte er diese Anforderungen sofort mit dem status Wert NDIS_STATUS_NOT_ACCEPTED abschließen.
NDIS_STATUS_REQUEST_ABORTED
Der Miniporttreiber hat die Verarbeitung der Anforderung beendet. Beispielsweise hat NDIS die MiniportResetEx-Funktion aufgerufen.
NDIS_STATUS_INDICATION_REQUIRED
Der Miniporttreiber stellt eine OID-Vervollständigung status mit einer nachfolgenden status-Angabe bereit. Ein Miniporttreiber kann nicht NDIS_STATUS_INDICATION_REQUIRED zurückgeben, es sei denn, die jeweilige OID lässt dies zu. Um festzustellen, ob diese status zulässig ist, finden Sie auf der OID-Referenzseite. Weitere Informationen zu NDIS_STATUS_INDICATION_REQUIRED finden Sie unter NDIS_OID_REQUEST und NDIS_STATUS_INDICATION.

Hinweise

Ein Treiber gibt den MiniportOidRequest-Einstiegspunkt an, wenn er die NdisMRegisterMiniportDriver-Funktion .

NDIS ruft die MiniportOidRequest-Funktion entweder im eigenen Namen oder im Namen eines gebundenen Protokolltreibers auf, der die NdisOidRequest-Funktion aufgerufen hat. Miniport-Treiber sollten die bei OidRequest bereitgestellte Anforderung untersuchen und die angeforderte Aktion ausführen. Weitere Informationen zu den OIDs, die Miniporttreiber verarbeiten, finden Sie unter NDIS-OIDs.

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.

Wenn MiniportOidRequest NDIS_STATUS_PENDING zurückgibt, ruft NDIS MiniportOidRequest nicht mit einer anderen Anforderung für den unter MiniportAdapterContext angegebenen Miniportadapter auf, bis die ausstehende Anforderung abgeschlossen ist.

Hinweis Die NDIS-Logik zum Aufhängen 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 aus dem Kontext des MiniportOidRequest-Aufrufs abgeschlossen werden. Stattdessen kann der Treiber NDIS_STATUS_PENDING zurückgeben und ein Arbeitselement in die Warteschlange stellen.
 
NDIS ruft MiniportOidRequest bei IRQL == PASSIVE_LEVEL .

Beispiele

Um eine MiniportOidRequest-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden Funktion identifiziert. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Das Deklarieren einer Funktion mithilfe der Funktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine MiniportOidRequest-Funktion mit dem Namen "MyOidRequest" zu definieren, verwenden Sie den typ MINIPORT_OID_REQUEST , wie in diesem Codebeispiel gezeigt:

MINIPORT_OID_REQUEST MyOidRequest;

Implementieren Sie dann Ihre Funktion wie folgt:

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

Der MINIPORT_OID_REQUEST Funktionstyp ist in der Headerdatei Ndis.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, fügen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzu. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den MINIPORT_OID_REQUEST Funktionstyp in der Headerdatei angewendet 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_annotations finden Sie unter Verhalten von Funktionen mit Anmerkungen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Windows
Kopfzeile ndis.h (einschließlich Ndis.h)
IRQL PASSIVE_LEVEL
DDI-Complianceregeln NdisOidComplete, NdisOidDoubleComplete, NdisOidDoubleRequest, NdisTimedOidComplete, WlanAssociation, WlanDisassociation, WlanTimedAssociation, WlanTimedConnectionRoaming, WlanTimedConnectIonRequest, WlanTimedLinkQuality, WlanTimedScan

Weitere Informationen

MiniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

MiniportResetEx

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisMOidRequestComplete

NdisMRegisterMiniportDriver

NdisOidRequest