Freigeben über


PROTOCOL_CO_OID_REQUEST Rückruffunktion (ndis.h)

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.

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

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
NDIS_STATUS_SUCCESS
Der Client- oder Anrufmanager hat den angeforderten Vorgang ausgeführt.
NDIS_STATUS_PENDING
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.
NDIS_STATUS_INVALID_LENGTH oder NDIS_STATUS_BUFFER_TOO_SHORT
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.
NDIS_STATUS_XXX-
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.
NDIS_STATUS_NOT_SUPPORTED
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

Siehe auch

MiniportCoOidRequest-

NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS NDIS_CO_CLIENT_OPTIONAL_HANDLERS

NDIS_OID_REQUEST

NdisClOpenAddressFamilyEx

NdisCoOidRequest

NdisCoOidRequestComplete

NdisMCmOidRequest

NdisMCmOidRequestComplete

NdisSetOptionalHandlers

ProtocolCmOpenAf-