KeWriteProtectProcessorState
CHAR __stdcall KeWriteProtectProcessorState(INT64 a1, UINT64 a2, INT64 a3, INT64 a4){
__int64 v4;
bool v6;
NTSTATUS v7;
UINT64 v8;
v4 = *(_QWORD *)a1;
v6 = VslVsmEnabled != 0;
LOBYTE(v7) = MmSetPageProtection(*(VOID **)(a1 + 56), 0x1000ui64, 2ui64);
if( v6 )
{
LOBYTE(v7) = MmSetPageProtection((VOID *)(v4 & 0xFFFFFFFFFFFFF000ui64), 0x1000ui64, 2ui64);
if( KiKvaShadow )
LOBYTE(v7) = MmSetPageProtection(*(VOID **)(a1 + 8), 0x1000ui64, 2ui64);
}
v8 = *(unsigned int *)(a1 + 420);
if( (_DWORD)v8 )
{
if( VslVsmEnabled )
LOBYTE(v7) = VslFinishStartSecureProcessor(v8);
}
else
{
v7 = KiShadowProcessorAllocation(a1 + 384, (CHAR *)(v4 - 12208));
if( !v7 )
KeBugCheck(0x7Du);
}
return v7;
}Referenced by:
KiDynamicProcessorInitialization
MakeGdtReadOnly