KeSignalCallDpcSynchronize
NTSTATUS __fastcall KeSignalCallDpcSynchronize(INT64 a1){
signed __int32 v2;
unsigned int v3;
NTSTATUS v4;
UINT64 SpinCount;
v2 = _InterlockedDecrement((volatile signed __int32 *)a1);
v3 = ~v2 & 0x80000000;
if( (v2 & 0x7FFFFFFF) != 0 )
{
v4 = 0;
LODWORD(SpinCount) = 0;
while( (*(_DWORD *)a1 & 0x80000000) != v3 )
KeYieldProcessorEx(&SpinCount);
}
else
{
v4 = 1;
*(_DWORD *)a1 = v3 | *(_DWORD *)(a1 + 4);
}
return v4;
}Referenced by:
KiInitializeDynamicProcessorDpc
MiApplyImageHotPatchDpc