Last active
May 13, 2024 22:22
-
-
Save mvankuipers/c88cdc2a2b3b5ca9d97820b85b33f11c to your computer and use it in GitHub Desktop.
Structure defining a page directory pointer table (PDPT) 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 _PDPTE | |
{ | |
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 PD. | |
ULONG64 PageCacheDisable : 1; // Determines the memory type used to access PD. | |
ULONG64 Accessed : 1; // If 0, this entry has not been used for translation. | |
ULONG64 Ignored1 : 1; | |
ULONG64 PageSize : 1; // If 1, this entry maps a 1GB page. | |
ULONG64 Ignored2 : 4; | |
ULONG64 PageFrameNumber : 36; // The page frame number of the PD of this PDPTE. | |
ULONG64 Reserved : 4; | |
ULONG64 Ignored3 : 11; | |
ULONG64 ExecuteDisable : 1; // If 1, instruction fetches not allowed. | |
}; | |
ULONG64 Value; | |
}; | |
} PDPTE, *PPDPTE; | |
static_assert(sizeof(PDPTE) == 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