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.