ViGenericVerifyNewIrp

VOID __stdcall ViGenericVerifyNewIrp(
        _IOV_REQUEST_PACKET *IovPacket,
        _IRP *Irp,
        _IO_STACK_LOCATION *IrpSp,
        _IOV_STACK_LOCATION *StackLocationData,
        VOID *CallerAddress){
  _IO_STACK_LOCATION *CurrentStackLocation; 
  int v8; 
  int StackCount; 
  int(__fastcall **p_CompletionRoutine)(_DEVICE_OBJECT *, _IRP *, void *); 
  UINT64 v11; 
  INT8 pszDest[96]; 

  if( *(_OWORD *)&Irp->UserIosb != 0i64 && ((Irp->Flags & 0x440) == 0 || (Irp->Flags & 0x402) == 0) )
  {
    CurrentStackLocation = Irp->Tail.CurrentStackLocation;
    v8 = Irp->CurrentLocation - 1;
    StackCount = Irp->StackCount;
    if( v8 > StackCount )
    {
LABEL_7:
      v11 = *((unsigned __int8 *)IovPacket + 60);
      if( (_BYTE)v11 )
      {
        ViErrorDisplayDescription(770);
        if( RtlStringCbPrintfA(pszDest, 0x5Bui64, (INT8 *)"CulpritAddress = %p, Irp = %p, IRQL = %u.\n") >= 0 )
          VfUtilDbgPrint(pszDest);
        ViErrorFinishReport(770, CallerAddress, (UINT64)Irp, v11);
      }
    }
    else
    {
      p_CompletionRoutine = &CurrentStackLocation[-1].CompletionRoutine;
      while( !*p_CompletionRoutine )
      {
        p_CompletionRoutine += 9;
        if( ++v8 > StackCount )
          goto LABEL_7;
      }
    }
  }
}

Referenced by:

No references.