VfPnpVerifyIrpStackDownward

VOID __stdcall VfPnpVerifyIrpStackDownward(
        _IRP **IovPacket,
        _DEVICE_OBJECT *DeviceObject,
        _IO_STACK_LOCATION *IrpLastSp,
        _IO_STACK_LOCATION *IrpSp,
        _IOV_STACK_LOCATION *RequestHeadLocationData,
        _IOV_STACK_LOCATION *StackLocationData,
        VOID *CallerAddress){
  _IRP *v11; 
  _IRP *v12; 
  int Status; 
  _DRIVER_OBJECT *DriverObject; 
  VOID *v15; 
  _DEVICE_OBJECT *v16; 
  int IsDeviceObjectMarked; 
  VI_PNP_HOW_PROCESSED v18; 
  UINT64 ForwardingDown; 
  _IOV_STACK_LOCATION v20; 

  if( (unsigned int)IovUtilIsWdmStack(DeviceObject) )
  {
    v11 = IovPacket[30];
    v12 = *IovPacket;
    Status = (*IovPacket)->IoStatus.Status;
    v20 = RequestHeadLocationData[24];
    if( LODWORD(v11->IoStatus.Information) == 3 )
      VfErrorReport1(529, CallerAddress, v12);
    DriverObject = DeviceObject->DriverObject;
    if( (VOID(__fastcall *)(_DEVICE_OBJECT *, _IRP *))DriverObject->MajorFunction[27] == IopInvalidDeviceRequest )
    {
      RequestHeadLocationData[1] |= 0x1000000u;
      LODWORD(v15) = VfGetPristineDriverInit(DriverObject);
      VfErrorReport1(543, v15, v12);
      StackLocationData[1] |= 0x80000000;
    }
    if( IrpLastSp )
    {
      if( Status < 0 )
      {
        if( Status == -1073741637 )
        {
          if( v20 != -1073741637 && (RequestHeadLocationData[1] & 0x2000000) == 0 )
          {
            VfErrorReport1(534, CallerAddress, v12);
            RequestHeadLocationData[1] |= 0x2000000u;
          }
        }
        else if( (RequestHeadLocationData[1] & 0x2000000) == 0 )
        {
          VfErrorReport1(533, CallerAddress, v12);
          RequestHeadLocationData[1] |= 0x2000000u;
        }
      }
      if( v11->IoStatus.Pointer )
      {
        if( (unsigned int)IovUtilIsDeviceObjectMarked((_DEVICE_OBJECT *)v11->IoStatus.Pointer, 2) )
        {
          IsDeviceObjectMarked = IovUtilIsDeviceObjectMarked(v16, 3);
          LODWORD(ForwardingDown) = 1;
          ViPnpVerifyMinorWasProcessedProperly(
            v12,
            IrpSp,
            IsDeviceObjectMarked == 0 ? VF_DEVOBJ_FDO : VF_DEVOBJ_PDO,
            v18,
            CallerAddress,
            ForwardingDown);
        }
      }
    }
  }
}

Referenced by:

No references.