1.3.1 Driver Routines and I/O Objects

KeSynchronizeExecution 
Synchronizes the execution of a driver-supplied SynchCritSection routine with that of the ISR associated with a set of interrupt objects, given a pointer to the interrupt object(s).
IoRequestDpc 
Queues a driver-supplied DpcForIsr routine to complete interrupt-driven I/O processing at a lower IRQL.
KeInsertQueueDpc 
Queues a DPC to be executed as soon as the IRQL of a processor drops below DISPATCH_LEVEL; returns FALSE if the DPC object is already queued.
KeRemoveQueueDpc 
Removes a given DPC object from the DPC queue; returns FALSE if the object was not in the queue.
IoAllocateAdapterChannel 
Connects a device object to an adapter object and calls a driver-supplied AdapterControl routine to carry out an I/O operation through the system DMA controller or a busmaster adapter as soon as the appropriate DMA channel is available and/or any necessary map registers are available. (This routine reserves exclusive access to a DMA channel and/or map registers for the specified device.)
IoFreeAdapterChannel 
Releases an adapter object, representing a system DMA channel, and optionally releases map registers, if any were allocated.
IoFreeMapRegisters 
Releases a set of map registers, saved from a call to IoAllocateAdapterChannel, after the registers have been used by IoMapTransfer and the busmaster DMA transfer is complete.
IoAllocateController 
Connects a device object to a controller object and calls a driver-supplied ControllerControl routine to carry out an I/O operation on the device controller as soon as the controller is not busy. (This routine reserves exclusive access to the hardware controller for the specified device.)
IoFreeController 
Releases a controller object, provided that all device operations queued to the controller for the current IRP have completed.
IoStartTimer 
Enables the timer for a given device object and calls the driver-supplied IoTimer routine once per second thereafter.
IoStopTimer 
Disables the timer for a given device object so the driver-supplied IoTimer routine is not called unless the driver re-enables the timer.
KeSetTimer 
Sets the absolute or relative interval at which a timer object will be set to the Signaled state and optionally supplies a timer DPC to be executed when the interval expires.
KeSetTimerEx 
Sets the absolute or relative interval at which a timer object will be set to the Signaled state, optionally supplies a timer DPC to be executed when the interval expires, and optionally supplies a recurring interval for the timer.
KeCancelTimer 
Cancels a timer object before the interval passed to KeSetTimer expires; dequeues a timer DPC before the timer interval, if any was set, expires.
KeReadStateTimer 
Returns whether a given timer object is set to the Signaled state.
IoStartPacket 
Calls the driver’s StartIo routine with the given IRP for the given device object or inserts the IRP into the device queue if the device is already busy, specifying whether the IRP is cancelable.
IoStartNextPacket 
Dequeues the next IRP for a given device object, specifying whether the IRP is cancelable, and calls the driver’s StartIo routine.
IoStartNextPacketByKey 
Dequeues the next IRP, according to the specified sort-key value, for a given device object, specifies whether the IRP is cancelable, and calls the driver’s StartIo routine.
IoSetCompletionRoutine 
Registers a driver-supplied IoCompletion routine with a given IRP, so the IoCompletion routine is called when the next-lower-level driver has completed the requested operation in one or more of the following ways: successfully, with an error, and/or by cancelling the IRP.
IoSetCancelRoutine 
Sets or clears the Cancel routine in an IRP. Setting a Cancel routine makes an IRP cancelable.
KeStallExecutionProcessor 
Stalls the caller (a device driver) for a given interval on the current processor.
ExAcquireResourceExclusiveLite
Acquires an initialized resource for exclusive access by the calling thread and optionally waits for the resource to be acquired.
ExTryToAcquireResourceExclusiveLite
Either acquires a given resource for exclusive access immediately or returns FALSE.
ExAcquireResourceSharedLite
Acquires an initialized resource for shared access by the calling thread and optionally waits for the resource to be acquired.
ExAcquireSharedStarveExclusive
Acquires a given resource for shared access without waiting for any pending attempts to acquire exclusive access to the same resource.
ExAcquireSharedWaitForExclusive
Acquires a given resource for shared access, optionally waiting for any pending exclusive waiters to acquire and release the resource first.
ExReleaseResourceForThreadLite
Releases a given resource that was acquired by the given thread.
ZwReadFile 
Reads data from an open file. If the caller opened the file object with certain parameters, the caller can wait on the file handle for completion of the I/O.
ZwWriteFile 
Writes data to an open file. If the caller opened the file object with certain parameters, the caller can wait on the file handle for completion of the I/O.