PROTOCOL_UNINSTALL Rückruffunktion (ndis.h)
NDIS ruft die ProtocolUninstall--Funktion eines Protokolltreibers auf, um Bereinigungsvorgänge auszuführen, bevor ein Protokolltreiber deinstalliert wird.
Syntax
PROTOCOL_UNINSTALL ProtocolUninstall;
void ProtocolUninstall()
{...}
Rückgabewert
Nichts
Bemerkungen
Die ProtocolUninstall--Funktion ist optional. Der Protokolltreiber hat ggf. einen Einstiegspunkt für diese Funktion in der NDIS_PROTOCOL_DRIVER_CHARACTERISTICS Struktur, die sie an die NdisRegisterProtocolDriver Funktion.
Als Reaktion auf eine Benutzeranforderung zum Deinstallieren eines Protokolltreibers ruft NDIS die ProtocolUninstall--Funktion eines Protokolltreibers auf. NDIS ruft ProtocolUninstall- nach dem Aufrufen des Protokolltreibers auf. ProtocolUnbindAdapterEx funktion einmal für jeden gebundenen Adapter.
ProtocolUninstall führt vom Treiber bestimmte Bereinigungsvorgänge aus. Beispielsweise könnten ProtocolUninstall- Clients anfordern, geöffnete Handles für Geräteobjekte zu schließen, die der Protokolltreiber exportiert hat. Bis alle solchen Handles geschlossen werden, ruft der E/A-Manager die Unload Routine nicht auf, die der im Treiberobjekt registrierte Protokolltreiber an seine DriverEntry Routine übergeben hat. Nachdem alle Handles geschlossen wurden, kann ProtocolUninstall-NdisDeregisterDeviceEx- aufrufen, um alle Geräteobjekte zu löschen, die vom Protokolltreiber erstellt wurden.
Der untere Rand eines Zwischentreibers erfordert möglicherweise eine ProtocolUninstall--Funktion. Der Zwischentreiber kann seine Protokoll-Edgeressourcen in ProtocolUninstall- freigeben, bevor NDIS seine MiniportDriverUnload--Funktion aufruft.
NDIS ruft ProtocolUninstall- bei IRQL = PASSIVE_LEVEL auf.
beispiele für
Um eine ProtocolUninstall--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 ProtocolUninstall--Funktion zu definieren, die den Namen "MyUninstall" hat, verwenden Sie den PROTOCOL_UNINSTALL Typ, wie in diesem Codebeispiel gezeigt:
PROTOCOL_UNINSTALL MyUninstall;
Implementieren Sie dann Ihre Funktion wie folgt:
_Use_decl_annotations_
VOID
MyUninstall(void)
{...}
Der PROTOCOL_UNINSTALL 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_UNINSTALL 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- | PASSIVE_LEVEL |