1.1.3  Standard Driver Routines

IoRegisterDriverReinitialization

Sets up a driver-supplied Reinitialize routine, together with its context, so the Reinitialize routine will be called when every subsequently loaded driver’s DriverEntry routine has returned control.

IoRegisterShutdownNotification

Sets up a (nonmass-storage) driver’s DispatchShutdown routine to be called when the system is being shut down.

IoUnregisterShutdownNotification

Removes a (nonmass-storage) driver’s DispatchShutdown routine from the list of those to be called when the system is being shut down.

HalGetInterruptVector

Returns a mapped system interrupt vector, DIRQL, and processor-affinity mask a driver can use to set up its ISR, given the type of bus on which the driver’s device is connected, the system-assigned bus number, and the bus’s interrupt vector and IRQL.

IoConnectInterrupt

Registers an ISR and sets up interrupt objects, using values supplied by HalGetInterruptVector. Returns a pointer to a set of interrupt objects that must be passed, along with the driver’s SynchCritSection entry point, to KeSynchronizeExecution.

IoDisconnectInterrupt

Releases a driver’s interrupt objects.

IoInitializeDpcRequest

Associates a driver-supplied DpcForIsr routine with a given device object, so the DpcForIsr can complete interrupt-driven I/O operations.

KeInitializeDpc

Initializes a DPC object, setting up a driver-supplied CustomDpc routine that can be called with a given context.

KeInitializeTimer

Initializes a notification timer object to the Not-Signaled state.

KeInitializeTimerEx

Initializes a notification or synchronization timer object to the Not-Signaled state.

IoInitializeTimer

Associates a timer with the given device object and registers a driver-supplied IoTimer routine for the device object.

MmLockPagableCodeSection

Locks a set of driver routines marked with a special compiler directive into system space, sometimes during driver initialization but usually in its DispatchCreate routine.

MmLockPagableDataSection

Locks a named data section marked with a special compiler directive into system space, when that data is used infrequently, predictably and at an IRQL less than DISPATCH_LEVEL.

MmLockPagableSectionByHandle

Locks a pageable section into system memory using a handle returned from MmLockPagableCodeSection or MmLockPagableDataSection.

MmUnlockPagableImageSection

Releases a set of driver routines or a set of data that were locked into nonpaged system space when the driver is no longer processing IRPs.

MmPageEntireDriver

MmPageEntireDriver allows a driver to page out all of its code and data regardless of the attributes of the various sections in the driver’s image.

MmResetDriverPaging

MmResetDriverPaging resets a driver’s pageable status to that specified by the sections which make up the driver’s image.