HalpMiscGetParameters
VOID __stdcall HalpMiscGetParameters(_LOADER_PARAMETER_BLOCK *LoaderBlock){
CHAR *v2;
CHAR *v3;
CHAR *v4;
char IsHvUsedForReboot;
CHAR *v6;
CHAR v7;
NTSTATUS v8;
CHAR v9;
NTSTATUS v10;
CHAR v11;
CHAR v12;
NTSTATUS v13;
if( (unsigned int)HalpInterruptModel() == 1 )
HalpMiscDiscardLowMemory = 1;
HalpInterruptBlockHyperthreading = HalpProcIsSmtDisabled((INT64)LoaderBlock);
if( HalpInterruptBlockHyperthreading )
{
if( !LoaderBlock )
return;
if( (*(_DWORD *)(*((_QWORD *)LoaderBlock + 30) + 132i64) & 0x200) == 0 )
HalpInterruptStartHyperthreadSiblings = 1;
}
if( LoaderBlock )
{
v2 = (CHAR *)*((_QWORD *)LoaderBlock + 27);
if( v2 )
{
strstr(v2, "SAFEBOOT:");
if( strstr(v2, "ONECPU") )
HalpInterruptProcessorCap = 1;
if( strstr(v2, "USEPHYSICALAPIC") )
HalpInterruptPhysicalModeOnly = 1;
if( strstr(v2, "BREAK") )
HalpMiscDebugBreakRequested = 1;
v3 = strstr(v2, "MAXPROCSPERCLUSTER");
if( v3 )
{
while( 1 )
{
v7 = *v3;
if( !*v3 || v7 == 32 || (unsigned __int8)(v7 - 48) <= 9u )
break;
++v3;
}
v8 = atoi(v3);
HalpInterruptClusterModeForced = 1;
if( v8 )
HalpInterruptMaxClusterSize = v8;
}
v4 = strstr(v2, "MAXAPICCLUSTER");
if( v4 )
{
while( 1 )
{
v9 = *v4;
if( !*v4 || v9 == 32 || (unsigned __int8)(v9 - 48) <= 9u )
break;
++v4;
}
v10 = atoi(v4);
if( v10 )
LODWORD(HalpInterruptMaxCluster) = v10;
}
if( strstr(v2, "X2APICPOLICY=ENABLE") )
HalpInterruptX2ApicPolicy = 1;
if( strstr(v2, "X2APICPOLICY=DISABLE") )
HalpInterruptX2ApicPolicy = 0;
if( strstr(v2, "USELEGACYAPICMODE") )
HalpInterruptX2ApicPolicy = 0;
if( strstr(v2, "TSCSYNCPOLICY=LEGACY") )
HalpTscSyncPolicy = 1;
if( strstr(v2, "TSCSYNCPOLICY=ENHANCED") )
HalpTscSyncPolicy = 2;
if( strstr(v2, "SYSTEMWATCHDOGPOLICY=DISABLED") )
{
HalpTimerWatchdogDisable = 1;
}
else if( strstr(v2, "SYSTEMWATCHDOGPOLICY=PHYSICALONLY") )
{
HalpTimerWatchdogPhysicalOnly = 1;
}
if( strstr(v2, "CONFIGACCESSPOLICY=DISALLOWMMCONFIG") )
HalpAvoidMmConfigAccessMethod = 1;
if( strstr(v2, "MSIPOLICY=FORCEDISABLE") )
{
v11 = 0;
}
else
{
if( !strstr(v2, "FORCEMSI") )
{
LABEL_31:
if( (unsigned __int8)HalpIsHvPresent() )
{
HalpHvPresent = 1;
if( (unsigned __int8)HalpIsPartitionCpuManager() )
*(_BYTE *)HalpHvCpuManager = 1;
IsHvUsedForReboot = HalpIsHvUsedForReboot();
}
else
{
IsHvUsedForReboot = HalpIsXboxNanovisorPresent();
}
if( IsHvUsedForReboot )
HalpHvUsedForReboot = 1;
if( strstr(v2, "FIRSTMEGABYTEPOLICY=USEALL")
|| HalpIsMicrosoftCompatibleHvLoaded() && !*(_BYTE *)HalpHvCpuManager )
{
HalpMiscDiscardLowMemory = 0;
}
if( strstr(v2, "USEPLATFORMCLOCK") )
HalpTimerPlatformSourceForced = 1;
if( strstr(v2, "USEPLATFORMTICK") )
HalpTimerPlatformClockSourceForced = 1;
v6 = strstr(v2, "GROUPSIZE");
if( v6 )
{
while( 1 )
{
v12 = *v6;
if( !*v6 || v12 == 32 || (unsigned __int8)(v12 - 48) <= 9u )
break;
++v6;
}
v13 = atoi(v6);
HalpMaximumGroupSize = v13;
if( (unsigned int)(v13 - 1) > 0x3F || ((v13 - 1) & v13) != 0 )
HalpMaximumGroupSize = 64;
}
strstr(v2, "HALTPROFILINGPOLICY=BLOCKED");
strstr(v2, "HALTPROFILINGPOLICY=RELAXED");
strstr(v2, "HALTPROFILINGPOLICY=RESTRICTED");
return;
}
v11 = 1;
}
HalpInterruptSetMsiOverride(v11);
goto LABEL_31;
}
}
}Referenced by:
HalpMiscInitSystem