SiGetSystemDisk
INT64 __fastcall SiGetSystemDisk(_FIRMWARE_TYPE FirmwareType, WCHAR **SystemDisk){
UINT8 IsWinPEBoot;
INT64 v5;
int BootDeviceName;
INT64 v7;
int BiosSystemDisk;
PARTITION_STYLE v10;
WCHAR *ResultName;
ResultName = 0i64;
v10 = PARTITION_STYLE_GPT;
IsWinPEBoot = SiIsWinPEBoot();
BootDeviceName = SiGetBootDeviceName(0i64, (WCHAR *)L"WindowsSysPartDevice", 0i64, 0i64, 0, SystemDisk);
if( BootDeviceName >= 0 )
return(unsigned int)BootDeviceName;
if( !IsWinPEBoot )
{
LOBYTE(v7) = 1;
BootDeviceName = SiGetBootDeviceName(0i64, (WCHAR *)L"FirmwareBootDevice", v7, 0i64, 0, SystemDisk);
if( BootDeviceName >= 0 )
return(unsigned int)BootDeviceName;
}
if( FirmwareType == FirmwareTypeBios )
{
BiosSystemDisk = SiGetBiosSystemDisk(SystemDisk);
}
else
{
if( FirmwareType != FirmwareTypeUefi )
{
BootDeviceName = -1073741637;
goto LABEL_7;
}
BiosSystemDisk = SiGetEfiSystemDevice(0i64, v5, (CHAR **)SystemDisk);
}
BootDeviceName = BiosSystemDisk;
LABEL_7:
if( BootDeviceName >= 0 )
{
BootDeviceName = SiTranslateSymbolicLink(*SystemDisk, &ResultName);
if( BootDeviceName >= 0 )
{
ExFreePoolWithTag(*SystemDisk, 0);
*SystemDisk = ResultName;
return(unsigned int)BootDeviceName;
}
return 0;
}
if( BootDeviceName == -1073740719 )
{
if( IsWinPEBoot )
{
if( FirmwareType == FirmwareTypeUefi )
{
LOBYTE(v7) = 1;
if( (int)SiGetBootDeviceName(0i64, (WCHAR *)L"FirmwareBootDevice", v7, &v10, 1, SystemDisk) >= 0 )
return 0;
}
}
}
return(unsigned int)BootDeviceName;
}Referenced by:
No references.