MiScrubMemoryWorker

VOID __stdcall MiScrubMemoryWorker(VOID *Context){
  UINT64 v1; 
  _KEVENT *v2; 
  _MISCRUB_PACKET *v3; 
  __int64 v4; 
  _MISCRUB_PACKET *v6; 
  NTSTATUS v7; 
  unsigned __int64 v8; 

  v4 = *(_QWORD *)Context;
  v7 = MiInitializeScrubPacket((_MI_PARTITION *)Context, v1, v2, v3);
  if( v7 >= 0 )
  {
    MiScrubNode((ULONG_PTR *)Context, v6);
    MiReleaseScrubPacket((_MISCRUB_PACKET *)Context);
  }
  v8 = *((_QWORD *)Context + 26);
  *((_DWORD *)Context + 3) = v7;
  _InterlockedExchangeAdd64((volatile signed __int64 *)(v4 + 40), v8);
  if( _InterlockedExchangeAdd((volatile signed __int32 *)v4, 0xFFFFFFFF) == 1 )
    KeSignalGate((_KGATE *)(v4 + 8), 1i64);
}

Referenced by:

No references.