PiDmListRemoveObject

VOID __stdcall PiDmListRemoveObject(
        _PI_DM_LIST_ID ListId,
        _PI_DM_OBJECT *ConstraintObject,
        _PI_DM_OBJECT *EntryObject,
        UINT8 *WasInList){
  _PI_DM_OBJECT_MANAGER *ObjectManagerForObjectType; 
  _ETHREAD *CurrentThread; 
  _PI_DM_OBJECT_MANAGER *v10; 
  _ETHREAD *v11; 

  ObjectManagerForObjectType = PiDmGetObjectManagerForObjectType((_PNP_OBJECT_TYPE)ConstraintObject[7]);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v10 = ObjectManagerForObjectType;
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)ConstraintObject, 0i64);
  v11 = (_ETHREAD *)KeGetCurrentThread();
  --v11->Tcb.KernelApcDisable;
  ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)EntryObject, 0i64);
  PiDmListRemoveObjectWorker((unsigned int)ListId, v10, ConstraintObject, EntryObject, WasInList);
  ExReleasePushLockEx((ULONG_PTR)EntryObject, 0);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  ExReleasePushLockEx((ULONG_PTR)ConstraintObject, 0);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
}

Referenced by:

PiPnpRtlCmActionCallback