PoIssueCoalescingNotification
VOID __stdcall PoIssueCoalescingNotification(VOID *Registration, PO_COALESCING_MSG Message){
_ETHREAD *CurrentThread;
INT64 *i;
signed __int64 *v4;
_EX_RUNDOWN_REF *v5;
_EX_RUNDOWN_REF *v6;
signed __int64 v7;
signed __int64 v8;
_DWORD v9[2];
__int64 v10;
v9[0] = 0;
v10 = 0i64;
v9[1] = Message;
LOBYTE(v9[0]) = *((_BYTE *)Registration + 32);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&stru_140C23628 + 415, 0i64);
for( i = (INT64 *)PopCoalRegistrationList; i != (INT64 *)&PopCoalRegistrationList; i = (INT64 *)*i )
{
v4 = i + 2;
v5 = ExReferenceCallBackBlock(i + 2);
v6 = v5;
if( v5 )
{
if( *((_BYTE *)i - 16) != LOBYTE(v9[0]) )
((void(__fastcall *)(_EX_RUNDOWN_REF *, _DWORD *, __int64))v5[1].Count)(v5, v9, v10);
_m_prefetchw(v4);
v7 = *v4;
while( ((unsigned __int64)v6 ^ v7) < 0xF )
{
v8 = v7;
v7 = _InterlockedCompareExchange64(v4, v7 + 1, v7);
if( v8 == v7 )
goto LABEL_9;
}
ExReleaseRundownProtection(v6);
}
LABEL_9:
;
}
PopReleaseRwLock((_POP_RW_LOCK *)((char *)&stru_140C23628 + 3320));
}Referenced by:
CmpIssueNewDirtyCallback
PopCoalescingCallbackWorker