IoRegisterDriverReinitialization-Funktion (ntddk.h)
Die IoRegisterDriverReinitialization-Routine wird während der Initialisierung oder Neuinitialisierung von einem Treiber aufgerufen, um seine Wiederitialroutine zu registrieren, um erneut aufgerufen zu werden, bevor die Initialisierung des Treibers und möglicherweise die Initialisierung des Systems abgeschlossen ist.
Syntax
void IoRegisterDriverReinitialization(
[in] PDRIVER_OBJECT DriverObject,
[in] PDRIVER_REINITIALIZE DriverReinitializationRoutine,
[in, optional] PVOID Context
);
Parameter
[in] DriverObject
Zeiger auf das Treiberobjekt, das in die DriverEntry-Routine eingegeben wurde.
[in] DriverReinitializationRoutine
Zeiger auf die Routine zum Erneut initialisieren des Treibers.
[in, optional] Context
Zeiger auf den Kontext, der an die Neuitialisierungsroutine des Treibers übergeben werden soll.
Rückgabewert
Keine
Bemerkungen
Ein Treiber kann diese Routine nur aufrufen, wenn seine DriverEntry-Routine STATUS_SUCCESS zurückgibt. Wenn die vom Treiber bereitgestellte Reinitialize-Routine die Registrierung verwenden muss, sollte die DriverEntry-Routine eine Kopie der Zeichenfolge enthalten, auf die RegistryPath als Teil des Kontexts verweist, der in diesem Aufruf an die Reinitialize-Routine übergeben wird.
Wenn der Treiber dynamisch geladen wird, kann dies während eines normal ausgeführten Systems erfolgen, sodass alle Verweise auf die Reitialisierungswarteschlange synchronisiert werden müssen.
Die Count-Eingabe für eine DriverReinitializationRoutine gibt an, wie oft diese Routine aufgerufen wurde, einschließlich des aktuellen Aufrufs.
Die DriverEntry-Routine kann IoRegisterDriverReinitialization nur einmal aufrufen. Wenn die Reinitialize-Routine erneut ausgeführt werden soll, nachdem die Wiederitialisierungsroutinen anderer Treiber die Steuerung zurückgegeben haben, kann die Reinitialize-Routine auch IoRegisterDriverReinitialization so oft aufrufen, wie die Reinitialisierungsroutine des Treibers ausgeführt werden soll.
In der Regel ist ein Treiber mit einer Reinitialisierungsroutine ein Treiber auf höherer Ebene, der sowohl PnP als auch ältere Geräte steuert. Ein solcher Treiber muss nicht nur Geräteobjekte für die Geräte erstellen, die der PnP-Manager erkennt (und für die der PnP-Manager die AddDevice-Routine des Treibers aufruft), der Treiber muss auch Geräteobjekte für Legacygeräte erstellen, die der PnP-Manager nicht erkennt. Ein Treiber kann eine Neuitialisierungsroutine verwenden, um diese Geräteobjekte zu erstellen und den Treiber über den nächstniedrigen Treiber für das zugrunde liegende Gerät zu übertragen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar ab Windows 2000. |
Zielplattform | Universell |
Header | ntddk.h (include Ntddk.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI-Complianceregeln | HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm) |