VOID
IoInitializeIrp(
IN OUT PIRP Irp,
IN USHORT PacketSize,
IN CCHAR StackSize
);
IoInitializeIrp initializes a given IRP that was allocated by the caller.
If a driver calls IoAllocateIrp, it also must call IoInitializeIrp with the same StackSize value and the pointer returned by IoAllocateIrp.
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.
IoAllocateIrp, IoAllocateMdl, IoBuildPartialMdl, IoFreeIrp, IoFreeMdl, IoSetNextIrpStackLocation, IoSizeOfIrp, IRP