SiGetBiosSystemPartition
NTSTATUS __stdcall SiGetBiosSystemPartition(WCHAR **SystemPartition){
VOID **PoolWithTag;
NTSTATUS BiosSystemDisk;
WORD *v4;
NTSTATUS v5;
NTSTATUS DriveLayoutInformation;
_DRIVE_LAYOUT_INFORMATION_EX *v7;
WORD *v8;
__int64 v9;
UINT64 v10;
ULONG PartitionCount;
PARTITION_INFORMATION_EX *PartitionEntry;
ULONG v13;
WCHAR *DriveName;
_DRIVE_LAYOUT_INFORMATION_EX *DriveLayout;
DriveLayout = 0i64;
PoolWithTag = 0i64;
DriveName = 0i64;
BiosSystemDisk = SiGetBiosSystemDisk(&DriveName);
v4 = DriveName;
v5 = BiosSystemDisk;
if( BiosSystemDisk < 0 )
goto LABEL_17;
DriveLayoutInformation = SiGetDriveLayoutInformation(DriveName, &DriveLayout);
v7 = DriveLayout;
v5 = DriveLayoutInformation;
if( DriveLayoutInformation >= 0 )
{
if( !DriveLayout->PartitionStyle )
{
v8 = wcsstr(v4, (INT8 *)L"\\Partition0");
if( v8 )
*v8 = 0;
v9 = -1i64;
do
++v9;
while( v4[v9] );
v10 = (unsigned int)(2 * v9 + 42);
PoolWithTag = ExAllocatePoolWithTag(1ui64, v10, 1263556947i64);
if( !PoolWithTag )
{
v5 = -1073741670;
goto LABEL_14;
}
PartitionCount = v7->PartitionCount;
PartitionEntry = v7->PartitionEntry;
v13 = 0;
if( PartitionCount )
{
while( !PartitionEntry->Gpt.BootIndicator )
{
++v13;
PartitionEntry = (PARTITION_INFORMATION_EX *)((char *)PartitionEntry + 144);
if( v13 >= PartitionCount )
goto LABEL_12;
}
swprintf_s((WCHAR *)PoolWithTag, v10 >> 1, (WCHAR *)L"%s\\Partition%lu", v4, PartitionEntry->PartitionNumber);
*SystemPartition = (WCHAR *)PoolWithTag;
v5 = 0;
goto LABEL_14;
}
}
LABEL_12:
v5 = -1073740718;
}
LABEL_14:
if( v7 )
ExFreePoolWithTag(v7, 0);
if( v5 < 0 && PoolWithTag )
ExFreePoolWithTag(PoolWithTag, 0);
LABEL_17:
if( v4 )
ExFreePoolWithTag(v4, 0);
return v5;
}Referenced by:
SiGetFirmwareSystemPartition