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
Keine
Bemerkungen
Die ProtocolUninstall-Funktion ist optional. Der Protokolltreiber registriert ggf. einen Einstiegspunkt für diese Funktion im NDIS_PROTOCOL_DRIVER_CHARACTERISTICS Struktur, die an den übergeben wurde NdisRegisterProtocolDriver-Funktion .
Als Reaktion auf eine Benutzeranforderung zum Deinstallieren eines Protokolltreibers ruft NDIS die ProtocolUninstall-Funktion eines Protokolltreibers auf. NDIS ruft ProtocolUninstall auf, nachdem der Protokolltreiber aufgerufen wurde. ProtocolUnbindAdapterEx-Funktion einmal für jeden gebundenen Adapter.
ProtocolUninstall führt vom Treiber bestimmte Bereinigungsvorgänge aus. Beispielsweise könnte ProtocolUninstall Clients auffordern, geöffnete Handles für Geräteobjekte zu schließen, die vom Protokolltreiber exportiert wurden. Bis alle derartigen Handles geschlossen sind, ruft der E/A-Manager nicht die Unload-Routine auf, die der im Treiberobjekt registrierte Protokolltreiber an seine DriverEntry-Routine übergeben hat. Nachdem alle Handles geschlossen wurden, kann ProtocolUninstallNdisDeregisterDeviceEx aufrufen, um alle vom Protokolltreiber erstellten Geräteobjekte zu löschen.
Der untere Protokollrand 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 unter IRQL = PASSIVE_LEVEL auf.
Beispiele
Um eine ProtocolUninstall-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der funktion identifiziert, die Sie definieren. 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 ProtocolUninstall-Funktion mit dem Namen "MyUninstall" zu definieren, verwenden Sie den typ PROTOCOL_UNINSTALL , 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 ist in der Ndis.h-Headerdatei 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_UNINSTALL 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 in NDIS 6.0 und höher. |
Zielplattform | Windows |
Kopfzeile | ndis.h (include Ndis.h) |
IRQL | PASSIVE_LEVEL |