PiDmListRemoveObject
_QWORD *__fastcall PiDmListRemoveObject(unsigned int a1, ULONG_PTR a2, ULONG_PTR a3, __int64 a4){
VOID *ObjectManagerForObjectType;
_ETHREAD *CurrentThread;
VOID *v10;
_ETHREAD *v11;
ObjectManagerForObjectType = PiDmGetObjectManagerForObjectType(*(unsigned int *)(a2 + 28));
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v10 = ObjectManagerForObjectType;
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockExclusiveEx(a2, 0i64);
v11 = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)v11 + 242);
ExAcquirePushLockSharedEx(a3, 0i64);
PiDmListRemoveObjectWorker(a1, v10, a2, a3, a4);
ExReleasePushLockEx(a3, 0i64);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
ExReleasePushLockEx(a2, 0i64);
return KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}Referenced by:
PiPnpRtlCmActionCallback