Freigeben über


PROTOCOL_CO_OID_REQUEST_COMPLETE Rückruffunktion (ndis.h)

Die ProtocolCoOidRequestComplete--Funktion schließt die Verarbeitung einer asynchronen CoNDIS OID-Anforderung ab.

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

Syntax

PROTOCOL_CO_OID_REQUEST_COMPLETE ProtocolCoOidRequestComplete;

void ProtocolCoOidRequestComplete(
  [in]      NDIS_HANDLE ProtocolAfContext,
  [in]      NDIS_HANDLE ProtocolVcContext,
  [in]      NDIS_HANDLE ProtocolPartyContext,
  [in, out] PNDIS_OID_REQUEST OidRequest,
  [in]      NDIS_STATUS Status
)
{...}

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 es sich bei dem Treiber um einen Anruf-Manager oder einen Miniport-Anruf-Manager (MCM) handelt, hat er dieses Handle aus seiner ProtocolCmOpenAf--Funktion bereitgestellt.

[in] ProtocolVcContext

Ein Handle, das die aktive virtuelle Verbindung (VC) identifiziert, für die der Treiber Informationen angefordert oder festgelegt hat, wenn die Anforderung VC-spezifisch war. Andernfalls ist dieser Parameter NULL-.

[in] ProtocolPartyContext

Ein Handle, das die Partei auf einem Multipoint-VC identifiziert, für die der Treiber Informationen angefordert oder festgelegt hat, wenn die Anforderung parteispezifisch ist. Andernfalls ist dieser Parameter NULL-.

[in, out] OidRequest

Ein Zeiger auf die vom Treiber bereitgestellte NDIS_OID_REQUEST Struktur, die zuvor an die NdisCoOidRequest oder NdisMCmOidRequest Funktion übergeben wurde.

[in] Status

Der endgültige Status der Anforderung. Der Zieltreiber oder NDIS bestimmt diesen endgültigen Status. Dieser Parameter bestimmt, was ProtocolCoOidRequestComplete- mit den Informationen bei OidRequest-.

Rückgabewert

Nichts

Bemerkungen

NDIS ruft die ProtocolCoOidRequestComplete--Funktion auf, um die Verarbeitung des CoNDIS-Clients, des Anruf-Managers oder der MCM-OID-Anforderung abzuschließen, für die die NdisCoOidRequest Funktion oder NdisMCmOidRequest Funktion zurückgegeben NDIS_STATUS_PENDING.

Um ProtocolCoOidRequestComplete- 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 ProtocolCoOidRequestComplete als Anrufmanager zu registrieren, initialisiert ein Treiber einen NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS Struktur und übergibt sie an den OptionalHandlers Parameter von NdisSetOptionalHandlers.

Der Zieltreiber ist der Treiber, der die OID-Informationsanforderung gewartet hat. Aufruf eines Zieltreibers an den NdisMCoOidRequestComplete, NdisCoOidRequestCompleteoder NdisMCmOidRequestComplete--Funktion bewirkte, dass NDIS die ProtocolCoOidRequestComplete--Funktion aufruft. NDIS leitet den Wert des Status-Parameters weiter, der als Eingabeparameter Status Parameter an ProtocolCoOidRequestCompleteübergeben wurde.

ProtocolCoOidRequestComplete verwendet den Eingabewert Status wie folgt:

  • Wenn Status NDIS_STATUS_SUCCESS ist, das BytesRead oder BytesWritten Member der NDIS_OID_REQUEST Struktur, auf das der OidRequest Parameter verweist, um angibt, wie viele Informationen aus dem Puffer im InformationBuffer Member der NDIS_OID_REQUEST an den Zieltreiber übertragen wurden oder wie viele Informationen an InformationBuffer-zurückgegeben wurden, beziehungsweise.

    Wenn der Treiber eine Abfrageanforderung vorgenommen hat, kann ProtocolCoOidRequestComplete- die daten verwenden, die in InformationBuffer zurückgegeben werden, entsprechend dem Wert, der im Oid Member von NDIS_OID_REQUEST angegeben ist.

  • Wenn Status NDIS_STATUS_INVALID_LENGTH oder NDIS_STATUS_BUFFER_TOO_SHORT ist, gibt das BytesNeededed- Element der NDIS_OID_REQUEST Struktur an, die OidRequest verweist, um den OID-spezifischen Wert des InformationBufferLength Members von NDIS_OID_REQUEST angibt, der zum Ausführen des angeforderten Vorgangs erforderlich ist.

    Unter diesen Umständen kann ProtocolCoOidRequestComplete- ausreichend Pufferplatz für die Anforderung zuweisen, eine weitere NDIS_OID_REQUEST Struktur mit dem erforderlichen Wert für InformationBufferLengtheinrichten und die OID-Anforderung erneut versuchen.

  • Wenn Status- ein NDIS_STATUS_ XXX--Wert ist, der ein nicht behebbarer Fehler ist, sollte ProtocolCoOidRequestComplete- den Speicher für die NDIS_OID_REQUEST Struktur freigeben. ProtocolCoOidRequestComplete sollte auch bestimmen, ob der Treiber die Bindung schließen oder seine bindungsspezifischen Statusinformationen anpassen soll, um fortgesetzte Netzwerk-E/A-Vorgänge für die Bindung zu verarbeiten.
Weitere Informationen zu systemdefinierte OIDs finden Sie unter NDIS OIDs.

ProtocolCoOidRequestComplete- kann aufgerufen werden, bevor der Treiber Zeit hatte, den Statuscode zu prüfen, der NdisCoOidRequest oder NdisMCmOidRequest zurückgibt.

NDIS ruft ProtocolCoOidRequestComplete- bei IRQL-<= DISPATCH_LEVEL auf.

beispiele für

Um eine ProtocolCoOidRequestComplete--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 ProtocolCoOidRequestComplete--Funktion zu definieren, die den Namen "MyCoOidRequestComplete" hat, verwenden Sie den PROTOCOL_CO_OID_REQUEST_COMPLETE Typ, wie in diesem Codebeispiel gezeigt:

PROTOCOL_CO_OID_REQUEST_COMPLETE MyCoOidRequestComplete;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyCoOidRequestComplete(
    NDIS_HANDLE  ProtocolAfContext,
    NDIS_HANDLE  ProtocolVcContext,
    NDIS_HANDLE  ProtocolPartyContext,
    PNDIS_OID_REQUEST  OidRequest,
    NDIS_STATUS  Status
    )
  {...}

Der PROTOCOL_CO_OID_REQUEST_COMPLETE 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_COMPLETE 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 Abschnitt "Hinweise")

Siehe auch

NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS NDIS_CO_CLIENT_OPTIONAL_HANDLERS

NDIS_OID_REQUEST

NdisClOpenAddressFamilyEx

NdisCoOidRequest

NdisCoOidRequestComplete

NdisMCmOidRequest

NdisMCmOidRequestComplete

NdisMCoOidRequestComplete

NdisSetOptionalHandlers

ProtocolCmOpenAf-