PiUEventGetDeviceInstanceIdFromUserHandle
VOID __stdcall PiUEventGetDeviceInstanceIdFromUserHandle(
PVOID UserHandle,
_UNICODE_STRING **DeviceId,
_DEVICE_OBJECT **RevocationDeviceObject){
_ETHREAD *CurrentThread;
KPROCESSOR_MODE v6;
NTSTATUS RelatedTargetDevice;
__int64 v8;
char IsProcessAppContainer;
__int64 v10;
PADAPTER_OBJECT DmaAdapter;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
*RevocationDeviceObject = 0i64;
v6 = *((_BYTE *)CurrentThread + 562);
v10 = 0i64;
DmaAdapter = 0i64;
if( ObReferenceObjectByHandle(UserHandle, 0, (POBJECT_TYPE)IoFileObjectType, v6, (PVOID *)&DmaAdapter, 0i64) >= 0 )
{
RelatedTargetDevice = PnpGetRelatedTargetDevice((PFILE_OBJECT)DmaAdapter, &v10);
v8 = v10;
if( RelatedTargetDevice >= 0 )
{
*DeviceId = (_UNICODE_STRING *)(v10 + 40);
IsProcessAppContainer = PsIsProcessAppContainer(*((_EPROCESS **)KeGetCurrentThread() + 23));
v8 = v10;
if( IsProcessAppContainer )
*RevocationDeviceObject = *(_DEVICE_OBJECT **)(v10 + 32);
}
if( v8 )
HalPutDmaAdapter(*(PADAPTER_OBJECT *)(v8 + 32));
}
if( DmaAdapter )
HalPutDmaAdapter(DmaAdapter);
}Referenced by:
PiUEventHandleRegistration