Expand Minimize

IoInitializeIrp routine

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

Syntax


VOID IoInitializeIrp(
  _Inout_  PIRP Irp,
  _In_     USHORT PacketSize,
  _In_     CCHAR StackSize
);

Parameters

Irp [in, out]

Pointer to the IRP to be initialized.

PacketSize [in]

Specifies the size in bytes of the IRP.

StackSize [in]

Specifies the number of stack locations in the IRP.

Return value

None

Remarks

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.

Requirements

Version

Available starting with Windows 2000.

Header

Wdm.h (include Wdm.h, Ntddk.h, or Ntifs.h)

Library

Ntoskrnl.lib

IRQL

<= DISPATCH_LEVEL

DDI compliance rules

IoReuseIrp, HwStorPortProhibitedDDIs

See also

IoAllocateIrp
IoAllocateMdl
IoBuildPartialMdl
IoFreeIrp
IoFreeMdl
IoReuseIrp
IoSetNextIrpStackLocation
IoSizeOfIrp
IRP

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft