PspJobIoRateVolumeEntryRemove
_RTL_BALANCED_NODE *__fastcall PspJobIoRateVolumeEntryRemove(_EJOB *Job, UINT64 VolumeKey){
INT64 *v2;
UINT64 *v4;
_RTL_BALANCED_NODE *v5;
unsigned __int8 v6;
UINT64 v7;
unsigned __int64 v8;
int v9;
NTSTATUS v10;
UINT64 v11;
v2 = (INT64 *)((char *)Job + 1456);
v4 = (UINT64 *)((char *)Job + 1464);
v5 = 0i64;
v6 = ExAcquireSpinLockExclusive((INT64 *)Job + 182);
v7 = *v4;
v8 = v6;
if( (v4[1] & 1) != 0 && v7 )
v7 ^= (unsigned __int64)v4;
v9 = v4[1] & 1;
if( v7 )
{
do
{
v10 = MiLockTrackerCompare(VolumeKey, v7);
if( v10 >= 0 )
{
if( v10 <= 0 )
break;
v11 = *(_QWORD *)(v7 + 8);
}
else
{
v11 = *(_QWORD *)v7;
}
if( v9 && v11 )
v7 ^= v11;
else
v7 = v11;
}
while( v7 );
if( v7 )
{
RtlRbRemoveNode(v4, v7);
v5 = (_RTL_BALANCED_NODE *)v7;
*(_QWORD *)(v7 + 16) = -1i64;
}
}
ExReleaseSpinLockExclusiveFromDpcLevel(v2);
__writecr8(v8);
return v5;
}Referenced by:
PspSetJobIoRateControlForVolume