PspSetJobIoRateControlForVolume
__int64 __fastcall PspSetJobIoRateControlForVolume(
unsigned __int64 a1,
_QWORD *a2,
_BYTE *a3,
_BYTE *a4,
unsigned __int64 *a5){
char v9;
MDL *PoolWithTag;
INT8 v11;
struct EX_RUNDOWN_REF *v12;
int v13;
struct EX_RUNDOWN_REF *v14;
struct EX_RUNDOWN_REF *v15;
*a3 = 0;
*a4 = 0;
*a5 = 0i64;
v9 = 0;
PoolWithTag = (MDL *)ExAllocatePoolWithTag(NonPagedPoolNx, 0x38ui64, 0x694A7350ui64);
v12 = (struct EX_RUNDOWN_REF *)PoolWithTag;
if( PoolWithTag )
{
PspIoRateEntryInitialize(PoolWithTag, v11);
v13 = PspIoRateEntryActivate(v12, (VOID **)a1, (INT64)a2, 0i64);
if( v13 >= 0 )
{
v9 = 1;
PspJobIoRateVolumeEntryRemove();
v15 = v14;
if( v14 )
{
PspIoRateEntryDeactivate(v14);
ExFreePoolWithTag(v15, 0);
*a3 = 1;
}
if( PspIoRateControlInfoIsAnySet(a2) )
{
*a5 = v12[5].Count;
PspJobIoRateVolumeEntryInsert(a1, (UINT64)v12);
v12 = 0i64;
*a4 = 1;
}
v13 = 0;
}
if( v12 )
{
if( v9 )
PspIoRateEntryDeactivate(v12);
ExFreePoolWithTag(v12, 0);
}
}
else
{
return(unsigned int)-1073741670;
}
return(unsigned int)v13;
}Referenced by:
PspSetJobIoRateControl