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