Freigeben über


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)

Weitere Informationen

DRIVER_OBJECT

IoRegisterBootDriverReinitialisierung