MiCreatePteCopyList
VOID __stdcall MiCreatePteCopyList(UINT64 SizeInPages, UINT64 MaximumSizeInPages, _MMPTE_COPY_LIST *PteCopyList){
UINT64 v4;
_MMPTE *v5;
unsigned int v6;
bool v7;
*PteCopyList = 0;
*((_QWORD *)PteCopyList + 2) = 0i64;
*((_WORD *)PteCopyList + 4) = 17;
if( SizeInPages <= MaximumSizeInPages >> 1 )
v4 = (unsigned int)(2 * SizeInPages);
else
v4 = (unsigned int)MaximumSizeInPages & 0xFFFFFFFE;
PteCopyList[1] = v4;
do
{
v5 = MiReservePtes((_MI_SYSTEM_PTE_TYPE *)((char *)&stru_140C4DB30 + 4432), v4);
*((_QWORD *)PteCopyList + 2) = v5;
if( v5 )
break;
v6 = PteCopyList[1];
v7 = v6 == 2;
v6 -= 2;
PteCopyList[1] = v6;
v4 = v6;
}
while( !v7 );
}Referenced by:
MiAddPagesToEnclave
MiCopyPage
MiCopyPagesIntoEnclave
MiFillPerSessionProtos
MiFindContiguousPages
MiGetPteMappingPair
MiInitializeScrubPacket
MmRelocatePfnList