Struct km::irp::IRP [] [src]

pub struct IRP {
    pub Type: u16,
    pub Size: u16,
    pub MdlAddress: PVOID,
    pub Flags: u32,
    pub SystemBuffer: PVOID,
    pub ThreadListEntry: LIST_ENTRY,
    pub IoStatus: IO_STATUS_BLOCK,
    pub RequestorMode: KPROCESSOR_MODE,
    pub PendingReturned: bool,
    pub StackCount: i8,
    pub CurrentLocation: i8,
    pub Cancel: bool,
    pub CancelIrql: KIRQL,
    pub ApcEnvironment: u8,
    pub AllocationFlags: u8,
    pub UserIosb: PIO_STATUS_BLOCK,
    pub UserEvent: PKEVENT,
    pub UserApcRoutine: PIO_APC_ROUTINE,
    pub UserApcContext: PVOID,
    pub CancelRoutine: PDRIVER_CANCEL,
    pub UserBuffer: PVOID,
    pub Overlay: _IRP_OVERLAY,
}

The IRP structure is a partial opaque structure that represents an I/O request packet.

Fields

Type
Size
MdlAddress

Pointer to an MDL describing a user buffer, if the driver is using direct I/O.

Flags

Flags word - used to remember various flags.

SystemBuffer

Pointer to a system-space buffer if the driver is using buffered I/O.

ThreadListEntry
IoStatus

I/O status - final status of operation.

RequestorMode

Indicates the execution mode of the original requester of the operation.

PendingReturned

If set to TRUE, a driver has marked the IRP pending.

StackCount

Stack state information.

CurrentLocation

Stack state information.

Cancel

If set to TRUE, the IRP either is or should be canceled.

CancelIrql

Irql at which the cancel spinlock was acquired.

ApcEnvironment
AllocationFlags

Allocation control flags.

UserIosb

User parameters.

UserEvent
UserApcRoutine
UserApcContext
CancelRoutine

Contains the entry point for a driver-supplied Cancel routine to be called if the IRP is canceled.

UserBuffer

Contains the address of an output buffer for IRP_MJ_DEVICE_CONTROL.

Overlay

Kernel structures.

Methods

impl IRP

fn get_current_stack_location(&mut self) -> &mut IO_STACK_LOCATION

Returns a pointer to the caller's stack location in the given IRP.

fn complete_request(&mut self, Status: NTSTATUS) -> NTSTATUS

Indicates that the caller has completed all processing for a given I/O request and is returning the given IRP to the I/O manager.