-
-
Save gavz/ffa721f36d0a84dfc54f9ea2e8b1268a to your computer and use it in GitHub Desktop.
Structure defining a PML4 entry in IA-32e paging.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
typedef struct _PML4E | |
{ | |
union | |
{ | |
struct | |
{ | |
ULONG64 Present : 1; // Must be 1, region invalid if 0. | |
ULONG64 ReadWrite : 1; // If 0, writes not allowed. | |
ULONG64 UserSupervisor : 1; // If 0, user-mode accesses not allowed. | |
ULONG64 PageWriteThrough : 1; // Determines the memory type used to access PDPT. | |
ULONG64 PageCacheDisable : 1; // Determines the memory type used to access PDPT. | |
ULONG64 Accessed : 1; // If 0, this entry has not been used for translation. | |
ULONG64 Ignored1 : 1; | |
ULONG64 PageSize : 1; // Must be 0 for PML4E. | |
ULONG64 Ignored2 : 4; | |
ULONG64 PageFrameNumber : 36; // The page frame number of the PDPT of this PML4E. | |
ULONG64 Reserved : 4; | |
ULONG64 Ignored3 : 11; | |
ULONG64 ExecuteDisable : 1; // If 1, instruction fetches not allowed. | |
}; | |
ULONG64 Value; | |
}; | |
} PML4E, *PPML4E; | |
static_assert(sizeof(PML4E) == sizeof(PVOID), "Size mismatch, only 64-bit supported."); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment