Previous Next

IoInitializeIrp

The IoInitializeIrp routine initializes a given IRP that was allocated by the caller.

VOID 
  IoInitializeIrp(
    IN OUT PIRP  Irp,
    IN USHORT  PacketSize,
    IN CCHAR  StackSize
    );

Parameters

Irp
Pointer to the IRP to be initialized.
PacketSize
Specifies the size in bytes of the IRP.
StackSize
Specifies the number of stack locations in the IRP.

Return Value

None

Headers

Declared in wdm.h and ntddk.h. Include wdm.h or ntddk.h.

Comments

Drivers use IoInitializeIrp to initialize IRPs the driver allocated as raw memory. Do not use IoInitializeIrp to initialize an IRP allocated by IoAllocateIrp. IoAllocateIrp automatically initializes the members of the IRP.

Drivers can use IoInitializeIrp to reinitialize an IRP for reuse only under certain circumstances. See Reusing IRPs for details.

If the driver associates an MDL with the IRP it allocated, the driver is responsible for releasing the MDL when the IRP is completed.

An intermediate or highest-level driver also can call IoBuildDeviceIoControlRequest, IoBuildAsynchronousFsdRequest, or IoBuildSynchronousFsdRequest to set up requests it sends to lower-level drivers. Only a highest-level driver can call IoMakeAssociatedIrp.

Callers of IoInitializeIrp must be running at IRQL <= DISPATCH_LEVEL.

See Also

IoAllocateIrp, IoAllocateMdl, IoBuildPartialMdl, IoFreeIrp, IoFreeMdl, IoReuseIrp, IoSetNextIrpStackLocation, IoSizeOfIrp, IRP