PopFxFindDeviceAndAllocateUniqueId

NTSTATUS __stdcall PopFxFindDeviceAndAllocateUniqueId(_DEVICE_NODE *DevNode, VOID ***FoundFxDevice){
  _UNICODE_STRING InstancePath; 
  NTSTATUS v5; 
  NTSTATUS AcpiDeviceByUniqueId; 
  _UNICODE_STRING UniqueId; 
  POP_FX_DEVICE *OutputFxDevice; 

  OutputFxDevice = 0i64;
  UniqueId = 0i64;
  if( PopFxQueryBiosDeviceName(DevNode, &UniqueId) < 0 )
  {
    InstancePath = DevNode->InstancePath;
LABEL_3:
    DevNode->UniqueId = InstancePath;
LABEL_4:
    v5 = 0;
    goto LABEL_5;
  }
  AcpiDeviceByUniqueId = PopFxFindAcpiDeviceByUniqueId(&UniqueId, (VOID ***)&OutputFxDevice);
  v5 = AcpiDeviceByUniqueId;
  if( AcpiDeviceByUniqueId >= 0 )
  {
    DevNode->UniqueId = UniqueId;
    _InterlockedOr(&DevNode->PowerFlags, 0x2000u);
    goto LABEL_4;
  }
  if( AcpiDeviceByUniqueId != -1073741738 )
  {
    InstancePath = UniqueId;
    goto LABEL_3;
  }
  if( UniqueId.Buffer )
    ExFreePoolWithTag(UniqueId.Buffer, 0x4D584650u);
LABEL_5:
  *FoundFxDevice = (VOID **)OutputFxDevice;
  return v5;
}

Referenced by:

PoFxPrepareDevice