PiDmGetObject
NTSTATUS __stdcall PiDmGetObject(PNP_OBJECT_TYPE ObjectType, WCHAR *ObjectName, PI_DM_OBJECT **Object){
NTSTATUS v5;
_PI_DM_OBJECT_MANAGER *ObjectManagerForObjectType;
_ETHREAD *CurrentThread;
_PI_DM_OBJECT *v8;
v5 = 0;
ObjectManagerForObjectType = PiDmGetObjectManagerForObjectType((_PNP_OBJECT_TYPE)ObjectType);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquireResourceSharedLite((UINT64)ObjectManagerForObjectType, 1);
v8 = PiDmLookupObject(ObjectManagerForObjectType, ObjectName);
*Object = v8;
if( v8 )
_InterlockedIncrement(v8 + 2);
else
v5 = -1073741772;
ExReleaseResourceLite((PERESOURCE)ObjectManagerForObjectType);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
return v5;
}Referenced by:
IopProcessSetInterfaceState
IopRegisterDeviceInterface
PiControlGetDeviceInterfaceEnabled
PiDmCacheDataEncode
PiDmGetObjectConstraintList
PiDmGetReferencedObjectFromProperty
PiDmObjectGetAggregatedBooleanPropertyData
PiDmObjectGetCachedObjectProperty
PiDmObjectGetCachedObjectPropertyData
PiDmObjectGetCachedObjectReference
PiDmObjectProcessPropertyChange
PiDmObjectUpdateCachedObjectProperty
PiPnpRtlApplyMandatoryDeviceContainerFilters
PiPnpRtlCmActionCallback
PiPnpRtlEnsureObjectCached
PiPnpRtlGatherContainerRemoveInfo
PiPnpRtlGatherInstallerClassChangeInfo
PiPnpRtlGatherInterfaceDeleteInfo
PiPnpRtlGatherPanelRemoveInfo
PiPnpRtlObjectEventCreate
PiUEventHandleRegistration