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.