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