CmCompleteRegistryInitialization
__int64 __fastcall CmCompleteRegistryInitialization(__int16 a1){
unsigned int v1;
INT64 v3;
char v4;
INT64 v5;
NTSTATUS v6;
POWER_ACTION_POLICY ActionPolicy;
__int128 Object;
__int64 v10;
_POP_ACTION_TRIGGER Trigger;
VOID *Handle;
v1 = 0;
v10 = 0i64;
Object = 0i64;
Handle = 0i64;
if( _InterlockedExchange(&CmFirstTime, 0) )
{
EtwInitialize(2ui64);
CmCompleteInitMachineConfig(&dword_140C508EC);
CmpInitializeSystemHivesLoad();
CmpLockRegistryExclusive();
CmpCmdInit(a1 == 1);
CmpUnlockRegistry();
if( a1 != 1 )
{
byte_140C5082C = 1;
if( NeedRmLogStart || (v4 = 0, CmpForceSynchronousMachineHiveLoad) )
v4 = 1;
KeInitializeEvent((INT64)&Object, 0, 0);
v6 = CmpCreateRegistryThread(
&Handle,
v5,
(_KSTART_ROUTINE *)CmpFinishSystemHivesLoad,
(VOID *)((unsigned __int64)&Object & -(__int64)(v4 != 0)));
if( v6 < 0 )
KeBugCheckEx(0x74u, (PVOID)2, (PVOID)3, (PVOID)3, (PVOID)v6);
if( v4 )
KeWaitForSingleObject((UINT64)&Object, 0, 0, 0, 0i64);
ZwClose((_HANDLE)Handle);
Handle = 0i64;
}
if( !CmFastBoot )
{
ExpRefreshSystemTime(v3);
PsBootPhaseComplete();
}
KeInitializeVelocity();
RtlLockBootStatusData(0i64);
PnpBootPhaseComplete();
PoInitHiberServices();
PoClearTransitionMarker();
PopAcquirePolicyLock();
PopThermalCriticalShutdownEnabled = 1;
if( PopThermalCriticalShutdownInitiated )
{
ActionPolicy.EventCode = 0;
*(_OWORD *)&Trigger.Wait = 0i64;
ActionPolicy.Action = PowerActionShutdownOff;
ActionPolicy.Flags = -1073741820;
Trigger.Type = PolicyDeviceThermalZone;
Trigger.Flags = 128;
PopCriticalShutdownInProgress = 1;
PopExecutePowerAction(
&Trigger,
0i64,
&ActionPolicy,
PowerSystemHibernate,
SubstituteLightestOverallDownwardBounded);
}
PopReleasePolicyLock();
PopQueueBatteryStatusTimeout();
NlsLocaleSectionPointer = (PVOID)1;
ExNotifyPlatformBinaryExecuted();
if( a1 != 1 )
IopCopyBootLogRegistryToFile();
}
else
{
return(unsigned int)-1073741790;
}
return v1;
}Referenced by:
NtInitializeRegistry