PiDqObjectManagerUnregisterQuery

VOID __stdcall PiDqObjectManagerUnregisterQuery(_PI_DQ_OBJECT_MANAGER *ObjectManager, _PI_DQ_QUERY *Query){
  __int64 v4; 
  _PI_DQ_QUERY **v5; 

  ExAcquireFastMutex((PFAST_MUTEX)ObjectManager->QueryList);
  v4 = *(_QWORD *)Query;
  if( *(_QWORD *)Query )
  {
    if( *(_PI_DQ_QUERY **)(v4 + 8) != Query || (v5 = (_PI_DQ_QUERY **)*((_QWORD *)Query + 1), *v5 != Query) )
      __fastfail(3u);
    *v5 = (_PI_DQ_QUERY *)v4;
    *(_QWORD *)(v4 + 8) = v5;
    --*(_DWORD *)&ObjectManager[1].WorkItem[4];
    PiDqQueryRelease(Query);
  }
  KeReleaseGuardedMutex((PKGUARDED_MUTEX)ObjectManager->QueryList);
}

Referenced by:

PiDqDispatch