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