Freigeben über


PROTOCOL_CL_DEREGISTER_SAP_COMPLETE Rückruffunktion (ndis.h)

Die ProtocolClDeregisterSapComplete-Funktion wird von verbindungsorientierten NDIS-Clients verwendet. Verbindungsorientierte NDIS-Clients, die eingehende Aufrufe akzeptieren, müssen über ProtocolClDeregisterSapComplete-Funktionen verfügen, um die asynchronen Vorgänge abzuschließen, die sie mit NdisClDeregisterSap initiieren. Andernfalls kann die vom Protokolltreiber registrierte ProtocolClDeregisterSapComplete-Funktion einfach die Steuerung zurückgeben.

Hinweis Sie müssen die Funktion mithilfe des typs PROTOCOL_CL_DEREGISTER_SAP_COMPLETE deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt Beispiele.
 

Syntax

PROTOCOL_CL_DEREGISTER_SAP_COMPLETE ProtocolClDeregisterSapComplete;

void ProtocolClDeregisterSapComplete(
  [in] NDIS_STATUS Status,
  [in] NDIS_HANDLE ProtocolSapContext
)
{...}

Parameter

[in] Status

Gibt den endgültigen status der Anforderung des Clients an, die Registrierung von SAP aufzuheben. Dies kann eine der folgenden Sein:

NDIS_STATUS_SUCCESS

Sap wurde geschlossen. Das NdisSapHandle , das den zuvor registrierten SAP des Clients darstellte, den der Client im Bereich ProtocolSapContext gespeichert hat, ist jetzt ungültig.

NDIS_STATUS_FAILURE

NDIS hatte den Status des AF als "schließend" markiert, sodass das zugeordnete SAP, dargestellt durch NdisSapHandle , bereits freigegeben wurde, als der Client aufrufte NdisClDeregisterSap ist aufgetreten.

NDIS_STATUS_XXX

Der Aufruf-Manager hat die Anforderung zum Schließen des SAP aus einem CM-bestimmten Grund nicht bestanden, und NDIS hat die von seiner zurückgegebenen status weitergegeben. ProtocolCmDeregisterSap-Funktion für den Client.

[in] ProtocolSapContext

Gibt das vom Client bereitgestellte Handle für den zugehörigen SAP-Kontextbereich an, der ursprünglich mit NdisClRegisterSap an NDIS übergeben wurde. Nachdem der Aufruf-Manager die Registrierung dieses SAP erfolgreich aufgehoben hat, kann der Client seinen Kontextbereich freigeben oder diesen Kontextbereich für die Wiederverwendung vorbereiten.

Rückgabewert

Keine

Bemerkungen

Ein Aufruf von ProtocolClDeregisterSapComplete gibt an, dass der vorherige Aufruf von NdisClDeregisterSap vom Aufruf-Manager verarbeitet wurde.

Es sei denn, der Aufruf-Manager konnte die Registrierung aus einem cm-bestimmten Grund nicht aufheben, der Client sollte die NdisSapHandle als ungültig betrachten, wenn ProtocolClDeregisterSapComplete aufgerufen wird. Daher kann ProtocolClDeregisterSapComplete den vom Client zugewiesenen SAP-Kontextbereich freigeben oder für die Wiederverwendung in einem nachfolgenden Aufruf von NdisClRegisterSap vorbereiten.

Beispiele

Um eine ProtocolClDeregisterSapComplete-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden Funktion identifiziert. Windows bietet eine Reihe von Funktionstypen für Treiber. 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 Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine ProtocolClDeregisterSapComplete-Funktion mit dem Namen "MyClDeregisterSapComplete" zu definieren, verwenden Sie den typ PROTOCOL_CL_DEREGISTER_SAP_COMPLETE , wie in diesem Codebeispiel gezeigt:

PROTOCOL_CL_DEREGISTER_SAP_COMPLETE MyClDeregisterSapComplete;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyClDeregisterSapComplete(
    NDIS_STATUS  Status,
    NDIS_HANDLE  ProtocolSapContext
    )
  {...}

Der PROTOCOL_CL_DEREGISTER_SAP_COMPLETE Funktionstyp ist in der Headerdatei Ndis.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, müssen Sie der Funktionsdefinition die anmerkung Use_decl_annotations hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den PROTOCOL_CL_DEREGISTER_SAP_COMPLETE 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 für NDIS 6.0- und NDIS 5.1-Treiber (siehe ProtocolClDeregisterSapComplete (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe ProtocolClDeregisterSapComplete (NDIS 5.1)) in Windows XP.
Zielplattform Windows
Kopfzeile ndis.h (include Ndis.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

NdisClDeregisterSap

NdisClRegisterSap

NdisCmDeregisterSapComplete

NdisFreeMemory

NdisFreeToNPagedLookasideList

NdisMCmDeregisterSapComplete

ProtocolCmDeregisterSap