Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Routine neu initialisieren setzt die Treiber- und Geräteinitialisierung fort, nachdem die DriverEntry Routine zurückgegeben wird.
Syntax
DRIVER_REINITIALIZE DriverReinitialize;
VOID DriverReinitialize(
[in] _DRIVER_OBJECT *DriverObject,
[in, optional] PVOID Context,
[in] ULONG Count
)
{...}
Parameter
[in] DriverObject
Vom Aufrufer bereitgestellter Zeiger auf eine DRIVER_OBJECT-Struktur. Dies ist das Treiberobjekt des Treibers.
[in, optional] Context
Vom Aufrufer bereitgestellter Zeiger auf Kontextinformationen, angegeben in einem vorherigen Aufruf von IoRegisterDriverReinitialization oder IoRegisterBootDriverReinitialization.
[in] Count
Vom Aufrufer bereitgestellter Wert, der angibt, wie oft die Reinitialisieren Routine aufgerufen wurde, einschließlich des aktuellen Anrufs.
Rückgabewert
Nichts
Bemerkungen
Um eine Routine für die Ausführung in die Warteschlange zu stellen, muss die DriverEntry-Routine eines Treibers entweder IoRegisterDriverReinitialization oder IoRegisterBootDriverReinitializationaufrufen. Die Reinitialisieren Routine kann auch IoRegisterDriverReinitialization selbst aufrufen, wodurch die Routine erneut abgefragt wird. Diese Erneute Queuierung kann mehrmals auftreten, und der Parameter Count routine gibt an, wie oft sie aufgerufen wurde. Der erste Aufruf IoRegisterDriverReinitialization- muss von DriverEntryerfolgen, und DriverEntry- muss STATUS_SUCCESS zurückgeben.
Weitere Informationen zum Implementieren einer Reinitialisieren Routine finden Sie unter Schreiben einer Neuitialisierungsroutine.
Beispiele
Zum Definieren einer Neuitialisieren Rückrufroutine müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der rückrufroutinen identifiziert, die Sie definieren. Windows stellt eine Reihe von Rückruffunktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen 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 Rückrufroutine zu definieren, die MyReinitializebenannt ist, verwenden Sie den DRIVER_REINITIALIZE Typ, wie in diesem Codebeispiel gezeigt:
DRIVER_REINITIALIZE MyReinitialize;
Implementieren Sie dann Ihre Rückrufroutine wie folgt:
_Use_decl_annotations_
VOID
MyReinitialize(
struct _DRIVER_OBJECT *DriverObject,
PVOID Context,
ULONG Count
)
{
// Function body
}
Der DRIVER_REINITIALIZE Funktionstyp wird in der Wdm.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 DRIVER_REINITIALIZE 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 WDM-Treiber. Informationen zu _Use_decl_annotations_finden Sie unter Annotating Function Behavior.
Anforderungen
| Anforderung | Wert |
|---|---|
| Zielplattform- | Desktop |
| Header- | ntddk.h (enthalten Ntddk.h, Ntifs.h) |
| IRQL- | Wird bei PASSIVE_LEVEL aufgerufen. |