MiMakeIoRangePermanentDpc
VOID __stdcall MiMakeIoRangePermanentDpc(
KDPC *Dpc,
PVOID DeferredContext,
PVOID SystemArgument1,
PVOID SystemArgument2){
signed __int32 v6;
unsigned int v7;
signed __int32 v8;
unsigned int v9;
UINT64 SpinCount;
UINT64 v11;
LODWORD(SpinCount) = 0;
v6 = _InterlockedDecrement((volatile signed __int32 *)SystemArgument2);
v7 = ~v6 & 0x80000000;
if( (v6 & 0x7FFFFFFF) != 0 )
{
while( (*(_DWORD *)SystemArgument2 & 0x80000000) != v7 )
KeYieldProcessorEx(&SpinCount);
}
else
{
*(_DWORD *)SystemArgument2 = v7 | *((_DWORD *)SystemArgument2 + 1);
*((_DWORD *)DeferredContext + 2) = MiMakeIoRangePermanent(*(_QWORD *)DeferredContext);
}
v8 = _InterlockedDecrement((volatile signed __int32 *)SystemArgument2);
v9 = ~v8 & 0x80000000;
if( (v8 & 0x7FFFFFFF) != 0 )
{
LODWORD(v11) = 0;
while( (*(_DWORD *)SystemArgument2 & 0x80000000) != v9 )
KeYieldProcessorEx(&v11);
}
else
{
*(_DWORD *)SystemArgument2 = v9 | *((_DWORD *)SystemArgument2 + 1);
}
_InterlockedDecrement((volatile signed __int32 *)SystemArgument1);
}Referenced by:
No references.