VfPendingShouldForce
NTSTATUS __stdcall VfPendingShouldForce(
UINT64 VerifierSettings,
UINT8 CallDriverIrql,
_IRP *Irp,
_IO_STACK_LOCATION *NextStackLocation,
_IOV_REQUEST_PACKET *IovPacket,
VOID *CallerAddress){
NTSTATUS v6;
VOID *v9;
int MajorFunction;
int MinorFunction;
int v12;
int v13;
int v14;
bool v15;
int v16;
v6 = 0;
if( (VerifierSettings & 0x200) != 0
&& CallDriverIrql < 2u
&& !*((_QWORD *)IovPacket + 27)
&& !VfDriverIsKernelImageAddress(CallerAddress)
&& (unsigned int)VfTargetDriversIsEnabled(v9)
&& (Irp->Flags & 0xC0) == 0
&& !Irp->PendingReturned
&& (unsigned int)VfRandomGetNumber(0i64, 0x64ui64) < ViPendingProbability )
{
MajorFunction = NextStackLocation->MajorFunction;
if( MajorFunction == 13 )
MinorFunction = *(_DWORD *)&NextStackLocation->Parameters.FileAttributes;
else
MinorFunction = NextStackLocation->MinorFunction;
v12 = MajorFunction - 12;
if( v12 )
{
v13 = v12 - 1;
if( v13 )
{
v14 = v13 - 4;
if( !v14 )
{
v15 = MinorFunction == 1;
goto LABEL_17;
}
if( v14 == 10 )
{
v15 = MinorFunction == 2;
LABEL_17:
LOBYTE(v6) = !v15;
return v6;
}
return 1;
}
if( MinorFunction != 589916 && MinorFunction != 589904 )
{
if( (unsigned int)(MinorFunction - 589824) > 0x14 || (v16 = 1118481, !_bittest(&v16, MinorFunction - 589824)) )
{
if( MinorFunction != 590400 )
return 1;
}
}
}
else if( MinorFunction != 2 )
{
return 1;
}
}
return v6;
}Referenced by:
IovpCallDriver1