MiQueueWorkingSetRequest

VOID __stdcall MiQueueWorkingSetRequest(_MI_PARTITION *Partition, UINT64 RequestFlags){
  int v2; 
  union {unsigned int LongFlags;_MI_PARTITION_FLAGS Flags;} v3; 
  char *WorkingSetControl; 
  int v5; 
  _KLOCK_QUEUE_HANDLE LockHandle; 

  v2 = RequestFlags;
  v3.LongFlags = (unsigned int)Partition->Core.u;
  memset(&LockHandle, 0, sizeof(LockHandle));
  if( (v3.Flags._bf_0 & 0x20) == 0 )
  {
    WorkingSetControl = (char *)Partition->WorkingSetControl;
    if( WorkingSetControl )
    {
      KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C4DB30 + 522, &LockHandle);
      v5 = *((_DWORD *)WorkingSetControl + 10);
      if( !v5 )
      {
        KeResetEvent((_KEVENT *)WorkingSetControl);
        v5 = *((_DWORD *)WorkingSetControl + 10);
      }
      *((_DWORD *)WorkingSetControl + 10) = v2 | v5;
      KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
      __writecr8(LockHandle.OldIrql);
      KeSetEvent((PRKEVENT)(WorkingSetControl + 96), 0, 0);
      KeWaitForSingleObject((UINT64)WorkingSetControl, 18, 0, 0, 0i64);
    }
  }
}

Referenced by:

MiCaptureAllWorkingSetAccessBits
MiEmptyAllWorkingSets
MiFindContiguousPages
MmTrimFilePagesFromWorkingSets