MiInitializeEnclavePfn
VOID __stdcall MiInitializeEnclavePfn(UINT64 PageFrameIndex, _MMPTE *PointerPte, UINT64 ProtectionMask){
char v3;
_MMPFN *v5;
unsigned __int64 v6;
unsigned __int64 v7;
char v8;
v3 = ProtectionMask;
v5 = &MmGetPfnDb()[PageFrameIndex];
v6 = MiLockPageInline(v5);
*((_BYTE *)&v5->u3 + 2) = *(_BYTE *)(&v5->u3 + 1) & 0xF8 | 6;
v7 = v5->u2._bf_0 & 0xC000000000000001ui64;
v5->u3.ReferenceCount = 1;
v8 = *((_BYTE *)&v5->u3 + 2);
v5->u2._bf_0 = v7 | 1;
*((_BYTE *)&v5->u3 + 2) = v8 | 0x10;
v5->PteLong = (unsigned __int64)PointerPte;
v5->OriginalPte.u.Long = MiSwizzleInvalidPte(32i64 * (v3 & 0x1F));
_InterlockedAnd64(&v5->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
__writecr8(v6);
}Referenced by:
MiAddPagesToEnclave
MiCopyPagesIntoEnclave
MiCreateHardwareEnclave