MINIPORT_CO_OID_REQUEST Rückruffunktion (ndis.h)
Die MiniportCoOidRequest--Funktion verarbeitet eine OID-Anforderung zum Abfragen oder Festlegen von Informationen im CoNDIS-Miniporttreiber.
Syntax
MINIPORT_CO_OID_REQUEST MiniportCoOidRequest;
NDIS_STATUS MiniportCoOidRequest(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] NDIS_HANDLE MiniportVcContext,
PNDIS_OID_REQUEST NdisRequest
)
{...}
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] MiniportVcContext
Ein Handle für einen vom Miniporttreiber zugewiesenen Kontextbereich, in dem der Miniporttreiber seinen zustand pro virtuelle Verbindung (VC) verwaltet. Der Miniporttreiber hat diesen Handle von der MiniportCoCreateVc--Funktion an NDIS geliefert. Wenn die Anforderung nicht VC-spezifisch ist, ist dieser Parameter NULL.
NdisRequest
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 Struktur zurück, auf die dieser Parameter verweist.
Rückgabewert
MiniportCoOidRequest- kann einen der folgenden Statuswerte zurückgeben:
Rückgabecode | Beschreibung |
---|---|
|
Der Miniporttreiber hat entweder die angeforderten Daten festgelegt oder abgerufen. |
|
Der Miniporttreiber führt die Anforderung asynchron aus. Nachdem der Miniporttreiber die gesamte Verarbeitung abgeschlossen hat, muss er die NdisMCoOidRequestComplete Funktion, um NDIS darüber zu informieren, dass die Anforderung abgeschlossen ist. |
|
Die anforderung, dass der angegebene OidRequest Parameter ungültig oder nicht erkannt wurde. |
|
Die Anforderung, dass der angegebene OidRequest Parameter erkannt, aber nicht vom Miniporttreiber unterstützt wurde. |
|
Der Puffer, den der OidRequest-parameter bereitgestellt hat, 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 einer der Parameter, die für die Anforderung bei OidRequest angegeben wurden, iwas ungültig. |
|
Nach dem Aufruf von NDIS MiniportDevicePNPEventNotify Funktion, um auf eine Überraschung hinzuweisen, ruft NDIS die MiniportHaltEx Funktion des Fahrers auf. Wenn der Treiber OID-Anforderungen empfängt, bevor NDIS MiniportHaltExaufruft, sollte er diese Anforderungen sofort mit dem Statuswert NDIS_STATUS_NOT_ACCEPTED abschließen. |
|
Der Miniporttreiber hat die Verarbeitung der Anforderung beendet. Beispielsweise hat NDIS den MiniportResetEx- oder MiniportCancelOidRequest Funktion. |
Bemerkungen
NDIS ruft die MiniportCoOidRequest--Funktion auf, um eine OID-Anforderung zum Abfragen oder Festlegen von Informationen in einem CoNDIS-Miniporttreiber zu verarbeiten.
Um MiniportCoOidRequest-zu registrieren, rufen Miniporttreiber die funktion NdisSetOptionalHandlers aus der MiniportSetOptions--Funktion auf. In MiniportSetOptions-initialisiert der Miniporttreiber einen NDIS_MINIPORT_CO_CHARACTERISTICS Struktur und übergibt sie an den OptionalHandlers Parameter von NdisSetOptionalHandlers.
NDIS ruft die MiniportCoOidRequest- Funktion entweder im eigenen Auftrag oder im Namen eines gebundenen Protokolltreibers auf, der die NdisCoOidRequest-Funktion aufgerufen hat. Miniport-Treiber sollten die anforderung untersuchen, die bei OidRequest- bereitgestellt wird, und die angeforderte Aktion ausführen. Weitere Informationen zu den OIDs, die Miniporttreiber behandeln, 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 MiniportCoOidRequest NDIS_STATUS_PENDING zurückgibt, kann NDIS MiniportCoOidRequest- mit einer anderen Anforderung aufrufen, für den miniportadapter, der bei MiniportAdapterContextangegeben ist, bevor die ausstehende Anforderung abgeschlossen ist. NDIS serialisiert keine verbindungsorientierten OID-Anforderungen.
beispiele für
Um eine MiniportCoOidRequest--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration angeben, 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 MiniportCoOidRequest--Funktion zu definieren, die den Namen "MyCoOidRequest" hat, verwenden Sie den MINIPORT_CO_OID_REQUEST Typ, wie in diesem Codebeispiel gezeigt:
MINIPORT_CO_OID_REQUEST MyCoOidRequest;
Implementieren Sie dann Ihre Funktion wie folgt:
_Use_decl_annotations_
NDIS_STATUS
MyCoOidRequest(
NDIS_HANDLE MiniportAdapterContext,
NDIS_HANDLE MiniportVcContext,
PNDIS_OID_REQUEST OidRequest
)
{...}
Der MINIPORT_CO_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_CO_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.0 und höher. |
Zielplattform- | Fenster |
Header- | ndis.h (include Ndis.h) |
IRQL- | <= DISPATCH_LEVEL |