1.2.1 Processing IRPs
-
IoGetCurrentIrpStackLocation
-
Returns a pointer to the caller’s I/O stack location in a given IRP.
-
IoGetNextIrpStackLocation
-
Returns a pointer to the next-lower-level driver’s I/O stack location in a
given IRP.
-
IoGetRelatedDeviceObject
-
Returns a pointer to the device object represented by a given file object.
-
IoGetFunctionCodeFromCtlCode
-
Returns the value of the function field within a given IOCTL_XXX or
FSCTL_XXX.
-
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.
-
IoCallDriver
-
Sends an IRP to a lower-level driver.
-
IoMarkIrpPending
-
Marks a given IRP indicating that STATUS_PENDING was returned because further
processing is required by another driver routine or by a lower-level driver.
-
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.
-
IoAcquireCancelSpinLock
-
Synchronizes cancelable-state transitions for IRPs in a multiprocessor-safe
manner.
-
IoSetCancelRoutine
-
Sets or clears the Cancel routine in an IRP. Setting a Cancel routine makes an
IRP cancelable.
-
IoReleaseCancelSpinLock
-
Releases the cancel spin lock when the driver has changed the cancelable state
of an IRP or releases the cancel spin lock from the driver’s Cancel routine.
-
IoCancelIrp
-
Marks an IRP as cancelled.
-
IoReadPartitionTable
-
Returns a list of partitions on a disk with a given sector size.
-
IoSetPartitionInformation
-
Sets the partition type and number for a (disk) partition.
-
IoWritePartitionTable
-
Writes partition tables for a disk, given the device object representing the
disk, the sector size, and a pointer to a buffer containing the drive
geometry.
-
IoAllocateErrorLogEntry
-
Allocates and initializes an error log packet; returns a pointer so the caller
can supply error-log data and call IoWriteErrorLogEntry with the
packet.
-
IoWriteErrorLogEntry
-
Queues a previously allocated error log packet, filled in by the driver, to
the system error logging thread.
-
IoIsErrorUserInduced
-
Returns a Boolean indicating whether an I/O request failed due to one of the
following conditions: STATUS_IO_TIMEOUT, STATUS_DEVICE_NOT_READY,
STATUS_UNRECOGNIZED_MEDIA, STATUS_VERIFY_REQUIRED, STATUS_WRONG_VOLUME,
STATUS_MEDIA_WRITE_PROTECTED, or STATUS_NO_MEDIA_IN_DEVICE. If the result is
TRUE, a removable-media driver must call IoSetHardErrorOrVerifyDevice
before completing the IRP.
-
IoSetHardErrorOrVerifyDevice
-
Supplies the device object for which the given IRP was failed due to a
user-induced error, such as supplying the incorrect media for the requested
operation or changing the media before the requested operation was completed.
A file system driver uses the associated device object to send a popup to the
user, who can then correct the error and/or retry the operation.
-
IoGetDeviceToVerify
-
Returns a pointer to the device object, representing a removable-media device,
that is the target of the given thread’s I/O request. (This routine is useful
only to file systems or other highest-level drivers.)
-
IoRaiseHardError
-
Causes a popup to be sent to the user indicating that the given IRP was failed
on the given device object for an optional VPB, so that the user can correct
the error and/or can retry the operation.
-
IoRaiseInformationalHardError
-
Causes a popup to be sent to the user, showing an I/O error status and
optional string supplying more information.
-
ExRaiseStatus
-
Raises an error status so that a caller-supplied structured exception handler
is called. (This routine is useful only to highest-level drivers that supply
exception handlers, in particular to file systems.)
-
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.
-
IoCompleteRequest
-
Completes an I/O request, giving a priority boost to the original caller and
returning a given IRP to the I/O system for disposal: either to call any
IoCompletion routines supplied by higher-level drivers, or to return status to
the original requestor of the operation.
-
IoGetCurrentProcess
-
Returns a pointer to the current process. (This routine is useful only to
highest-level drivers.)
-
IoGetInitialStack
-
Returns the initial base address of the current thread’s stack. (This routine
is useful only to highest-level drivers.)