VfPnpVerifyIrpStackDownward
UINT64 __fastcall VfPnpVerifyIrpStackDownward(INT64 a1, DEVICE_OBJECT *a2, INT64 a3, INT64 a4, INT64 a5, INT64 a6){
UINT64 result;
__int64 v11;
const void *v12;
int v13;
__int64 v14;
const void *v15;
__int64 v16;
int IsDeviceObjectMarked;
int v18;
int v19;
const void *v20;
result = IovUtilIsWdmStack(a2);
if( (_DWORD)result )
{
v11 = *(_QWORD *)(a1 + 240);
v12 = *(const void **)a1;
v13 = *(_DWORD *)(*(_QWORD *)a1 + 48i64);
v19 = *(_DWORD *)(a5 + 96);
if( *(_DWORD *)(v11 + 56) == 3 )
VfErrorReport1(529i64, v20, v12);
v14 = *((_QWORD *)a2 + 1);
result = (UINT64)IopInvalidDeviceRequest;
if( *(NTSTATUS(__stdcall **)(_DEVICE_OBJECT *, _IRP *))(v14 + 328) == IopInvalidDeviceRequest )
{
*(_DWORD *)(a5 + 4) |= 0x1000000u;
LODWORD(v15) = VfGetPristineDriverInit((DRIVER_OBJECT *)v14);
VfErrorReport1(543i64, v15, v12);
result = a6;
*(_DWORD *)(a6 + 4) |= 0x80000000;
}
if( a3 )
{
if( v13 < 0 )
{
if( v13 == -1073741637 )
{
if( v19 != -1073741637 && (*(_DWORD *)(a5 + 4) & 0x2000000) == 0 )
{
VfErrorReport1(534i64, v20, v12);
*(_DWORD *)(a5 + 4) |= 0x2000000u;
}
}
else if( (*(_DWORD *)(a5 + 4) & 0x2000000) == 0 )
{
VfErrorReport1(533i64, v20, v12);
*(_DWORD *)(a5 + 4) |= 0x2000000u;
}
}
if( *(_QWORD *)(v11 + 48) )
{
result = IovUtilIsDeviceObjectMarked(*(_QWORD *)(v11 + 48), 2);
if( (_DWORD)result )
{
IsDeviceObjectMarked = IovUtilIsDeviceObjectMarked(v16, 3);
ViPnpVerifyMinorWasProcessedProperly((__int64)v12, a4, IsDeviceObjectMarked == 0 ? 4 : 0, v18, v20, 1);
}
}
}
}
return result;
}Referenced by:
No references.