63 if (
unlikely(!CurrentThread))
return;
68 ApcState->AttachedToProcess =
true;
79 uint64_t TargetCr3 = Process->PageDirectoryPhysical;
80 if (ApcState->SavedCr3 != TargetCr3) {
108 if (
unlikely(!CurrentThread))
return;
109 if (!ApcState->AttachedToProcess)
return;
113 if (CurrentCr3 != ApcState->SavedCr3) {
126 ApcState->AttachedToProcess =
false;
void MeDetachProcess(IN PAPC_STATE ApcState)
void MeAttachProcess(IN PIPROCESS Process, OUT PAPC_STATE ApcState)
NORETURN void MeBugCheckEx(IN enum _BUGCHECK_CODES BugCheckCode, IN void *BugCheckParameter1, IN void *BugCheckParameter2, IN void *BugCheckParameter3, IN void *BugCheckParameter4)
FORCEINLINE void __write_cr3(uint64_t val)
FORCEINLINE uint64_t __read_cr3(void)
@ INVALID_PROCESS_ATTACH_ATTEMPT
FORCEINLINE PITHREAD MeGetCurrentThread(void)
FORCEINLINE bool MeIsExecutingDpc(void)
FORCEINLINE void MeReleaseSchedulerLock(void)
struct _APC_STATE * PAPC_STATE
FORCEINLINE void MeAcquireSchedulerLock(void)
FORCEINLINE PEPROCESS PsGetEProcessFromIProcess(IN PIPROCESS IProcess)
PEPROCESS SavedApcProcess
struct _APC_STATE ApcState