PiDmListAddObject
void __fastcall PiDmListAddObject(unsigned int a1, UINT64 a2, UINT64 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);
PiDmListAddObjectWorker(a1, v10, a2, a3, a4);
ExReleasePushLockEx(a3, 0i64);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
ExReleasePushLockEx(a2, 0i64);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}Referenced by:
IopRegisterDeviceInterface
PiDmListInitEnumCallback
PiPnpRtlCmActionCallback