IoRegisterDriverReinitialization

VOID
    IoRegisterDriverReinitialization(

        IN PDRIVER_OBJECT  DriverObject,
        IN PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
        IN PVOID  Context
        );

IoRegisterDriverReinitialization is called by a driver during its initialization or reinitialization to register its Reinitialize routine to be called again before the driver’s and, possibly the system’s, initialization is complete.

Parameters

DriverObject
Points to the driver object that was input to the DriverEntry routine.
DriverReinitializationRoutine
Specifies the entry point for the driver-supplied Reinitialize routine, which is declared as follows:
VOID
(*PDRIVER_REINITIALIZE)(
    IN PDRIVER_OBJECT DriverObject,
    IN PVOID Context,
    IN ULONG Count
    );
Context
Points to the context passed to the driver’s Reinitialize routine.

Comments

A driver can call this routine only if its DriverEntry routine will return STATUS_SUCCESS. If the driver-supplied Reinitialize routine must use the registry, the DriverEntry routine should include its input RegistryPath pointer as part of the context passed to the Reinitialize routine in this call.

If the driver is loaded dynamically, it is possible for this to occur during a normally running system, so all references to the reinitialization queue must be synchronized.

The Count input to a DriverReinitializationRoutine indicates how many times this routine has been called.

Callers of IoRegisterDriverReinitialization must be running at IRQL PASSIVE_LEVEL.

See Also

DRIVER_OBJECT