Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die ProtocolCoOidRequest--Funktion verarbeitet OID-Anforderungen, die CoNDIS-Clients oder eigenständige Anrufmanager durch Aufrufe der NdisCoOidRequest-Funktion initiieren oder dass ein MCM-Treiber (Miniport Call Manager) durch Aufrufe an die NdisMCmOidRequest Funktion initiiert wird.
Syntax
PROTOCOL_CO_OID_REQUEST ProtocolCoOidRequest;
NDIS_STATUS ProtocolCoOidRequest(
[in] NDIS_HANDLE ProtocolAfContext,
[in] NDIS_HANDLE ProtocolVcContext,
[in] NDIS_HANDLE ProtocolPartyContext,
[in, out] PNDIS_OID_REQUEST OidRequest
)
{...}
Parameter
[in] ProtocolAfContext
Ein Handle, das einen Adressfamilienkontextbereich (AF) identifiziert. Wenn es sich bei dem Treiber um einen Client handelt, hat er dieses Handle beim Aufrufen des NdisClOpenAddressFamilyEx Funktion, um sich mit dem Anrufmanager zu verbinden. Wenn der Treiber ein Anruf-Manager ist, hat er dieses Handle von der ProtocolCmOpenAf--Funktion bereitgestellt.
[in] ProtocolVcContext
Ein Handle, das die virtuelle Verbindung (VC) identifiziert, um Informationen abzufragen oder festzulegen, wenn die Anforderung VC-spezifisch ist. Andernfalls ist dieser Parameter NULL-.
[in] ProtocolPartyContext
Ein Handle, das die Partei auf einem Multipoint VC identifiziert, um Informationen abzufragen oder festzulegen, wenn die Anforderung parteispezifisch ist. Andernfalls ist dieser Parameter NULL-.
[in, out] OidRequest
Ein Zeiger auf eine NDIS_OID_REQUEST-Struktur, die sowohl den Puffer als auch das Anforderungspaket für den Zieltreiber enthält. Je nach Anforderung gibt der Treiber angeforderte Informationen in der Struktur zurück, auf die OidRequest verweist.
Rückgabewert
ProtocolCoOidRequest- kann eine der folgenden Werte zurückgeben:
| Rückgabecode | Beschreibung |
|---|---|
|
Der Client- oder Anrufmanager hat den angeforderten Vorgang ausgeführt. |
|
Der Client oder der Anruf-Manager verarbeitet diese Anforderung asynchron, und er ruft die NdisCoOidRequestComplete-Funktion oder der NdisMCmOidRequestComplete Funktion, wenn der angeforderte Vorgang abgeschlossen ist. |
|
Der Treiber ist fehlgeschlagen, da der Aufrufer der NdisCoOidRequest oder NdisMCmOidRequest--Funktion keinen angemessenen Wert für das InformationBuffer Member der NDIS_OID_REQUEST Struktur für die angegebene Anforderung bereitgestellt hat. Der Treiber legt den BytesNeededed Member von NDIS_OID_REQUEST im Puffer am OidRequest Parameter auf den OID-spezifischen Wert des InformationBufferLength Members fest, das zum Ausführen des angeforderten Vorgangs erforderlich ist. |
|
Der Client- oder Anruf-Manager hat die Anforderung für einen bestimmten treiberbestimmten Grund fehlgeschlagen, z. B. ungültige Eingabedaten, die für einen Satz angegeben wurden. |
|
Der Client- oder Anruf-Manager hat diese Anforderung fehlgeschlagen, da er den OID_GEN_CO_XXX- Code im Oid--Member im Puffer bei NdisRequest-nicht erkannt hat. |
Bemerkungen
Die ProtocolCoOidRequest Funktion ist für CoNDIS-Clients, Anrufmanager und MCMs erforderlich. ProtocolCoOidRequest- ähnelt der MiniportCoOidRequest- funktion des Miniporttreibers.
CoNDIS-Clients und Anrufmanager senden Informationen aneinander, indem sie einen Wert ohneNULL im NdisAfHandle Parameter angeben, wenn sie die NdisCoOidRequest Funktion aufrufen. Ebenso rufen MCMs die NdisMCmOidRequest mit expliziten Werten für NdisAfHandle- auf, um Informationen an Clients zu übermitteln. Solche Aufrufe von NdisCoOidRequest oder NdisMCmOidRequest dazu führen, dass NDIS die ProtocolCoOidRequest- funktion des gezielten Clients, Des Anruf-Managers oder MCM aufruft, die dem angegebenen AF-Handle zugeordnet ist.
Um ProtocolCoOidRequest als Client zu registrieren, initialisiert ein Treiber einen NDIS_CO_CLIENT_OPTIONAL_HANDLERS Struktur und übergibt sie an den OptionalHandlers Parameter der NdisSetOptionalHandlers-Funktion. Um ProtocolCoOidRequest als Anrufmanager zu registrieren, initialisiert ein Treiber einen NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS Struktur und übergibt sie an den parameter OptionalHandlers.
Wenn die NdisVcHandle und NdisPartyHandle parameter NdisCoOidRequest oder NdisMCmOidRequestNULLsind, ist die Anforderung global. Das heißt, ein expliziter Wert für NdisVcHandle oder NdisPartyHandle- gibt an, dass ProtocolCoOidRequest- die angegebene Anforderung je VC oder pro Partei erfüllen sollte.
Der Puffer am OidRequest- Parameter wurde aus nicht seitenseitigem Pool zugewiesen und ist daher bei ausgelösten IRQL zugänglich. Der Aufrufer von NdisCoOidRequest(oder NdisMCmOidRequest) muss diesen Puffer freigeben und der interne Puffer am InformationBuffer Member der NDIS_OID_REQUEST Struktur freigeben, auf die OidRequest verweist.
Wenn ProtocolCoOidRequest NDIS_STATUS_PENDING zurückgibt, muss der Treiber anschließend den Aufruf des Treibers ausführen. NdisCoOidRequestComplete--Funktion oder die NdisMCmOidRequestComplete-Funktion für einen MCM-Treiber, wenn der Treiber die Anforderung abgeschlossen hat.
beispiele für
Um eine ProtocolCoOidRequest--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 ProtocolCoOidRequest--Funktion zu definieren, die den Namen "MyCoOidRequest" hat, verwenden Sie den PROTOCOL_CO_OID_REQUEST Typ, wie in diesem Codebeispiel gezeigt:
PROTOCOL_CO_OID_REQUEST MyCoOidRequest;
Implementieren Sie dann Ihre Funktion wie folgt:
_Use_decl_annotations_
NDIS_STATUS
MyCoOidRequest(
NDIS_HANDLE ProtocolAfContext,
NDIS_HANDLE ProtocolVcContext,
NDIS_HANDLE ProtocolPartyContext,
PNDIS_OID_REQUEST OidRequest
)
{...}
Der PROTOCOL_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 PROTOCOL_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 |