SiValidateSystemPartition
NTSTATUS __stdcall SiValidateSystemPartition(PWCHAR SystemDevice){
_DWORD *v1;
_DWORD *v2;
__int64 v4;
UINT64 v5;
__int64 v7;
NTSTATUS v8;
_PARTITION_INFORMATION_EX result;
int OutputBuffer[2];
int v11;
__int128 v12;
__int128 v13;
__int64 v14;
char v15;
v2 = v1;
memset((INT64)&result, 0i64);
v11 = 0;
LODWORD(v4) = SiGetDiskPartitionInformation(SystemDevice, &result);
if( (int)v4 < 0 )
return v4;
if( v2 && result.PartitionStyle != *v2 )
{
LODWORD(v4) = -1073741823;
return v4;
}
v4 = 3221225473i64;
if( result.PartitionStyle != PARTITION_STYLE_GPT )
{
if( result.PartitionStyle == PARTITION_STYLE_MBR )
v4 = result.Mbr.BootIndicator == 0 ? 0xC0000001 : 0;
if( (int)v4 < 0 )
return v4;
LABEL_8:
if( v15 )
{
v11 = 0;
OutputBuffer[0] = 0;
OutputBuffer[1] = 0;
v14 = 0i64;
v12 = 0i64;
v13 = 0i64;
v8 = SiIssueSynchronousIoctl(SystemDevice, (PVOID)v4, OutputBuffer, v5);
LODWORD(v4) = v8;
if( v8 >= 0 )
{
if( BYTE10(v12) )
LODWORD(v4) = -1073741436;
}
}
return v4;
}
v7 = *(_QWORD *)&result.Mbr - *(_QWORD *)&PARTITION_SYSTEM_GUID.Data1;
if( *(_QWORD *)&result.Mbr == *(_QWORD *)&PARTITION_SYSTEM_GUID.Data1 )
v7 = *(_QWORD *)result.Gpt.PartitionType.Data4 - *(_QWORD *)PARTITION_SYSTEM_GUID.Data4;
if( !v7 )
{
v4 = 0i64;
goto LABEL_8;
}
return v4;
}Referenced by:
SiGetBootDeviceName