IoDiskIoAttributionQuery
__int64 __fastcall IoDiskIoAttributionQuery(__int64 a1, _OWORD *a2, _OWORD *a3){
__int128 v6;
__int128 v7;
__int128 v8;
__int64 result;
struct _KLOCK_QUEUE_HANDLE LockHandle;
_BYTE v11[24];
UINT64 QpcTimeStamp[2];
*(_DWORD *)v11 = 1;
memset(&v11[4], 0, 20);
*(_DWORD *)&v11[4] = _mm_cvtsi128_si32((__m128i)0i64) | 0x200;
memset(&LockHandle, 0, sizeof(LockHandle));
QpcTimeStamp[0] = KeQueryUnbiasedInterruptTimePrecise(QpcTimeStamp);
KeAcquireInStackQueuedSpinLock((UINT64 *)(a1 + 40), &LockHandle);
IopRecordIoAttribution((UINT64 *)a1, (INT64)v11, 3);
v6 = *(_OWORD *)(a1 + 104);
*a2 = *(_OWORD *)(a1 + 88);
v7 = *(_OWORD *)(a1 + 128);
a2[1] = v6;
v8 = *(_OWORD *)(a1 + 144);
*a3 = v7;
a3[1] = v8;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
result = (unsigned int)KiIrqlFlags;
__writecr8(LockHandle.OldIrql);
return result;
}Referenced by:
IoGetIoRateControl
IopIoRateStartRateControl
PspQueryJobIoAttribution