MiWritePteShadow
CHAR __stdcall MiWritePteShadow(){
_ETHREAD *CurrentThread;
__int64 v1;
unsigned __int64 v2;
_QWORD *ShadowMapping;
LODWORD(CurrentThread) = MiPteHasShadow();
if( (_DWORD)CurrentThread )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
ShadowMapping = CurrentThread->Tcb.ApcState.Process->Vm.Shared.ShadowMapping;
if( ShadowMapping )
{
LOBYTE(CurrentThread) = -(v1 & 1);
ShadowMapping[(v2 >> 3) & 0x1FF] = v1 & 0x7FFFFFFFFFFFFFFFi64 & -(__int64)((v1 & 1) != 0);
}
}
return(char)CurrentThread;
}Referenced by:
MI_INTERLOCKED_EXCHANGE_PTE
MiBuildForkPte
MiClearDriverHotPatchPtes
MiConvertPrivateToProto
MiDeleteVa
MiDemoteValidLargePageOneLevel
MiHandleForkTransitionPte
MiMakeProtoReadOnly
MiMakeSystemLeavesNonZero
MiMapMdlCommon
MiMapMemoryDumpMdl
MiMapPageFileHash
MiPrivateFixup
MiRewriteTrimPteAsDemandZero
MiScrubLargeMappedPage
MiSetPagingOfDriver
MiSwitchToTransition
MiTerminateWsleCluster
MiUnlockNestedPageTableWritePte
MiWriteTopLevelPxe
MiWriteUselessChildPte
MiWriteValidPteNewPage
MiWsleFlush
MiZeroAndFlushPtes
MmAllocateIndependentPagesEx
MmChangeKernelCfgBitmap
MxCreateFreePfns
RemoveListEntryPte