ViGenericVerifyIrpStackDownward
void __fastcall ViGenericVerifyIrpStackDownward(
__int64 a1,
__int64 a2,
__int64 a3,
unsigned __int8 *a4,
__int64 a5,
int a6,
const void *a7){
const VOID *v7;
__int64 v9;
unsigned int v11;
int IsNewRequest;
unsigned __int8 v14;
int v15;
UINT64 v16;
int v17;
INT64 v18;
int v19;
int v20;
int v21;
__int64 v22;
__int64 v23;
char pszDest[96];
v7 = *(const VOID **)a1;
v9 = *(_QWORD *)(a1 + 240);
v11 = *(_DWORD *)(*(_QWORD *)a1 + 48i64);
v21 = *(_DWORD *)(a5 + 96);
v23 = *(_QWORD *)(*(_QWORD *)a1 + 56i64);
v22 = *(_QWORD *)(a5 + 104);
v20 = *(_DWORD *)(a5 + 4) & 0x8000000;
IsNewRequest = VfMajorIsNewRequest((_IO_STACK_LOCATION *)a3, (_IO_STACK_LOCATION *)a4);
v14 = *a4;
v15 = IsNewRequest;
v19 = IsNewRequest;
if( (*a4 < 3u || v14 > 4u && (v14 <= 0xDu || v14 > 0xFu && v14 != 22)) && *(_DWORD *)(v9 + 56) == 2 )
{
v16 = *(unsigned __int8 *)(a1 + 60);
if( (unsigned __int8)v16 >= 2u && (*(_DWORD *)(a1 + 56) & 0x2000000) == 0 )
{
ViErrorDisplayDescription(769);
if( (int)RtlStringCbPrintfA(pszDest, 0x5Bui64, (INT8 *)"CulpritAddress = %p, Irp = %p, IRQL = %u.\n") >= 0 )
VfUtilDbgPrint(pszDest);
ViErrorFinishReport(769i64, (UINT64)a7, (UINT64)v7, v16);
*(_DWORD *)(a1 + 56) |= 0x2000000u;
v15 = v19;
}
}
if( a3 )
{
v17 = *(_DWORD *)(a5 + 4);
if( (*(_BYTE *)(a1 + 56) & 0x20) != 0 && (v17 & 0x1000000) == 0 )
{
if( v15 && !v20 )
{
*(_DWORD *)(a5 + 4) = v17 | 0x1000000;
ViErrorReport1(530i64, a7, v7);
}
if( v11 != v21 )
{
*(_DWORD *)(a5 + 4) |= 0x1000000u;
v18 = 571i64;
if( a4[1] != 0xFF )
v18 = 531i64;
ViErrorReport1(v18, a7, v7);
}
if( v23 != v22 )
{
*(_DWORD *)(a5 + 4) |= 0x1000000u;
ViErrorReport1(532i64, a7, v7);
}
}
if( !(unsigned int)VfMajorIsValidIrpStatus((IO_STACK_LOCATION *)a4, v11) )
ViErrorReport6(768i64, a7, v7, v11);
}
}Referenced by:
No references.