Previous Next

IoRegisterBootDriverReinitialization

The IoRegisterBootDriverReinitialization routine is called by a boot driver to register the driver's reinitialization routine with the I/O manager to be called after all devices have been enumerated and started.

VOID 
  IoRegisterBootDriverReinitialization(
    IN PDRIVER_OBJECT  DriverObject,
    IN PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
    IN PVOID  Context
    );

Parameters

DriverObject
Pointer to the driver object for the boot driver to be reinitialized.
DriverReinitializationRoutine
Pointer to a caller-supplied reinitialization routine. This routine is defined as follows:
VOID
(*PDRIVER_REINITIALIZE) (
    IN struct _DRIVER_OBJECT *DriverObject,
    IN PVOID Context,
    IN ULONG Count
    ); 

The DriverReinitializationRoutine parameters are as follows:

DriverObject
Pointer to the file system filter driver's driver object.
Context
Optional context pointer.
Count
Number of times this routine has been called, including the current call.
Context
Optional context pointer to be passed to the driver's reinitialization routine.

Return Value

None

Headers

Declared in ntddk.h and ntifs.h. Include ntddk.h or ntifs.h.

Comments

A boot driver normally calls IoRegisterBootDriverReinitialization from its DriverEntry routine, which is executed during boot driver initialization. IoRegisterBootDriverReinitialization registers the driver's reinitialization callback routine to be called by the I/O manager after all devices have been enumerated and started. The DriverReinitializationRoutine is run in a system thread at IRQL = PASSIVE_LEVEL.

A driver should call IoRegisterBootDriverReinitialization only if its DriverEntry routine will return STATUS_SUCCESS.

If the DriverReinitializationRoutine uses the registry, the DriverEntry routine must include in IoRegisterBootDriverReinitialization's Context parameter a copy of the string to which DriverEntry's own RegistryPath parameter points.

The DriverEntry routine can call IoRegisterBootDriverReinitialization only once. If the reinitialization routine needs to be run more than once, the DriverReinitializationRoutine can call IoRegisterBootDriverReinitialization as many additional times as needed, using the Count parameter to keep track of the number of times the DriverReinitializationRoutine has been called.

Callers of IoRegisterBootDriverReinitialization must be running at IRQL = PASSIVE_LEVEL.

See Also

DRIVER_OBJECT, IoRegisterDriverReinitialization