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.
Syntax
MINIPORT_DIRECT_OID_REQUEST MiniportDirectOidRequest;
NDIS_STATUS MiniportDirectOidRequest(
[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
MiniportDirectOidRequest kann einen der folgenden status-Werte zurückgeben:
Rückgabecode | Beschreibung |
---|---|
|
Der Miniporttreiber hat die Daten wie angefordert festgelegt oder abgerufen. |
|
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. |
|
Die von OidRequest angegebene Anforderung war ungültig oder nicht erkannt. |
|
Die von OidRequest angegebene Anforderung wurde erkannt, aber der Miniporttreiber unterstützt sie nicht. |
|
Der Puffer, den OidRequest bereitstellt, war zu klein, um die angeforderten Daten aufzunehmen. |
|
Der Wert, der im InformationBufferLength-Member der NDIS_OID_REQUEST-Struktur bei OidRequest angegeben wurde, ist für den angegebenen OID_Xxx-Code falsch. |
|
Mindestens ein Parameter, die für die Anforderung bei OidRequest angegeben wurden, waren ungültig. |
|
Nach dem Aufruf des MiniportDevicePnPEventNotify-Funktion , um eine überraschende Entfernung anzuzeigen, hat NDIS die MiniportHaltEx-Funktion des Treibers aufgerufen. Wenn der Treiber OID-Anforderungen empfangen hat, bevor NDIS MiniportHaltEx aufruft, sollte er diese Anforderungen sofort mit dem status Wert NDIS_STATUS_NOT_ACCEPTED abschließen. |
|
Der Miniporttreiber hat die Verarbeitung der Anforderung beendet. Beispielsweise hat NDIS die MiniportResetEx-Funktion aufgerufen. |
|
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
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 Die MiniportCancelDirectOidRequest-Funktion muss auch MiniportDirectOidRequest registrieren.
NDIS ruft die MiniportDirectOidRequest-Funktion entweder im eigenen Namen oder im Namen eines gebundenen Protokolltreibers auf, der die NdisDirectOidRequest-Funktion aufgerufen hat. Miniporttreiber sollten die Anforderung untersuchen, die am OidRequest-Parameter bereitgestellt wird, und die angeforderte Aktion ausführen.
Beachten Sie, dass NDIS die OID-spezifischen Inhalte 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 mit anderen OID-Anforderungen an MiniportDirectOidRequest gesendet werden. Der Miniporttreiber muss in der Lage sein, mehrere Aufrufe von MiniportDirectOidRequest zu verarbeiten, wenn andere Anforderungen, die an MiniportOidRequest oder MiniportDirectOidRequest gesendet werden, ausstehen.
Beispiele
Um eine MiniportDirectOidRequest-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 MiniportDirectOidRequest-Funktion mit dem Namen "MyDirectOidRequest" zu definieren, 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 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_DIRECT_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.1 und höher. |
Zielplattform | Windows |
Kopfzeile | ndis.h (einschließlich Ndis.h) |
IRQL | <= DISPATCH_LEVEL |