PspSetJobIoRateControlForVolume
NTSTATUS __stdcall PspSetJobIoRateControlForVolume(
_EJOB *Job,
_JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2 *ControlInfo,
UINT8 *OldEntryDeactivated,
UINT8 *NewEntryActivated,
VOID **OpaqueRateControl){
char v9;
_PS_IO_CONTROL_ENTRY *PoolWithTag;
_PS_IO_CONTROL_ENTRY *v11;
NTSTATUS v12;
int v13;
_PS_IO_CONTROL_ENTRY *v14;
_PS_IO_CONTROL_ENTRY *v15;
*OldEntryDeactivated = 0;
*NewEntryActivated = 0;
*OpaqueRateControl = 0i64;
v9 = 0;
PoolWithTag = (_PS_IO_CONTROL_ENTRY *)ExAllocatePoolWithTag(0x200ui64, 0x38ui64, 1766486864i64);
v11 = PoolWithTag;
if( !PoolWithTag )
return -1073741670;
PspIoRateEntryInitialize(PoolWithTag);
PspIoRateEntryActivate(v11, Job);
v12 = v13;
if( v13 >= 0 )
{
v9 = 1;
v14 = (_PS_IO_CONTROL_ENTRY *)PspJobIoRateVolumeEntryRemove(Job, v11->VolumeKey);
v15 = v14;
if( v14 )
{
PspIoRateEntryDeactivate(v14);
ExFreePoolWithTag(v15, 0);
*OldEntryDeactivated = 1;
}
if( PspIoRateControlInfoIsAnySet(ControlInfo) )
{
*OpaqueRateControl = v11->IoControl;
PspJobIoRateVolumeEntryInsert(Job, v11);
v11 = 0i64;
*NewEntryActivated = 1;
}
v12 = 0;
}
if( v11 )
{
if( v9 )
PspIoRateEntryDeactivate(v11);
ExFreePoolWithTag(v11, 0);
}
return v12;
}Referenced by:
PspSetJobIoRateControl