IopAllocateIrpWithExtension

_IRP *__stdcall IopAllocateIrpWithExtension(
        _DEVICE_OBJECT *DeviceObject,
        INT8 StackSize,
        UINT8 ChargeQuota,
        VOID *ReturnAddress){
  _IRP *IrpPrivate; 
  _IRP *v5; 
  _IO_STACK_LOCATION *v6; 

  IrpPrivate = IopAllocateIrpPrivate(0i64, StackSize + 1, ChargeQuota, ReturnAddress);
  v5 = IrpPrivate;
  if( IrpPrivate )
  {
    v6 = --IrpPrivate->Tail.CurrentStackLocation;
    --IrpPrivate->CurrentLocation;
    --IrpPrivate->StackCount;
    IrpPrivate->Tail.IrpExtension = v6;
    if( IopIsActivityTracingEnabled() )
      IopInitActivityIdIrp(v5);
  }
  return v5;
}

Referenced by:

IoAllocateIrp
IoAllocateIrpEx
IopAllocateIrpExReturn
IopInitializeReserveIrps
IopMountVolume