summaryrefslogtreecommitdiffstats
path: root/vendor/ntapi/src/ntpfapi.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ntapi/src/ntpfapi.rs')
-rw-r--r--vendor/ntapi/src/ntpfapi.rs219
1 files changed, 219 insertions, 0 deletions
diff --git a/vendor/ntapi/src/ntpfapi.rs b/vendor/ntapi/src/ntpfapi.rs
new file mode 100644
index 000000000..d6323611b
--- /dev/null
+++ b/vendor/ntapi/src/ntpfapi.rs
@@ -0,0 +1,219 @@
+use crate::ntexapi::SYSTEM_MEMORY_LIST_INFORMATION;
+use crate::ntmmapi::MMPFN_IDENTITY;
+use winapi::shared::basetsd::{SIZE_T, ULONG_PTR};
+use winapi::shared::ntdef::{CHAR, LONGLONG, PVOID, ULONG, ULONGLONG, WCHAR};
+ENUM!{enum PF_BOOT_PHASE_ID {
+ PfKernelInitPhase = 0,
+ PfBootDriverInitPhase = 90,
+ PfSystemDriverInitPhase = 120,
+ PfSessionManagerInitPhase = 150,
+ PfSMRegistryInitPhase = 180,
+ PfVideoInitPhase = 210,
+ PfPostVideoInitPhase = 240,
+ PfBootAcceptedRegistryInitPhase = 270,
+ PfUserShellReadyPhase = 300,
+ PfMaxBootPhaseId = 900,
+}}
+ENUM!{enum PF_ENABLE_STATUS {
+ PfSvNotSpecified = 0,
+ PfSvEnabled = 1,
+ PfSvDisabled = 2,
+ PfSvMaxEnableStatus = 3,
+}}
+STRUCT!{struct PF_TRACE_LIMITS {
+ MaxNumPages: ULONG,
+ MaxNumSections: ULONG,
+ TimerPeriod: LONGLONG,
+}}
+pub type PPF_TRACE_LIMITS = *mut PF_TRACE_LIMITS;
+STRUCT!{struct PF_SYSTEM_PREFETCH_PARAMETERS {
+ EnableStatus: [PF_ENABLE_STATUS; 2],
+ TraceLimits: [PF_TRACE_LIMITS; 2],
+ MaxNumActiveTraces: ULONG,
+ MaxNumSavedTraces: ULONG,
+ RootDirPath: [WCHAR; 32],
+ HostingApplicationList: [WCHAR; 128],
+}}
+pub type PPF_SYSTEM_PREFETCH_PARAMETERS = *mut PF_SYSTEM_PREFETCH_PARAMETERS;
+pub const PF_BOOT_CONTROL_VERSION: u32 = 1;
+STRUCT!{struct PF_BOOT_CONTROL {
+ Version: ULONG,
+ DisableBootPrefetching: ULONG,
+}}
+pub type PPF_BOOT_CONTROL = *mut PF_BOOT_CONTROL;
+ENUM!{enum PREFETCHER_INFORMATION_CLASS {
+ PrefetcherRetrieveTrace = 1,
+ PrefetcherSystemParameters = 2,
+ PrefetcherBootPhase = 3,
+ PrefetcherRetrieveBootLoaderTrace = 4,
+ PrefetcherBootControl = 5,
+}}
+pub const PREFETCHER_INFORMATION_VERSION: ULONG = 23;
+pub const PREFETCHER_INFORMATION_MAGIC: ULONG = 0x6b756843;
+STRUCT!{struct PREFETCHER_INFORMATION {
+ Version: ULONG,
+ Magic: ULONG,
+ PrefetcherInformationClass: PREFETCHER_INFORMATION_CLASS,
+ PrefetcherInformation: PVOID,
+ PrefetcherInformationLength: ULONG,
+}}
+pub type PPREFETCHER_INFORMATION = *mut PREFETCHER_INFORMATION;
+STRUCT!{struct PF_SYSTEM_SUPERFETCH_PARAMETERS {
+ EnabledComponents: ULONG,
+ BootID: ULONG,
+ SavedSectInfoTracesMax: ULONG,
+ SavedPageAccessTracesMax: ULONG,
+ ScenarioPrefetchTimeoutStandby: ULONG,
+ ScenarioPrefetchTimeoutHibernate: ULONG,
+}}
+pub type PPF_SYSTEM_SUPERFETCH_PARAMETERS = *mut PF_SYSTEM_SUPERFETCH_PARAMETERS;
+pub const PF_PFN_PRIO_REQUEST_VERSION: u32 = 1;
+pub const PF_PFN_PRIO_REQUEST_QUERY_MEMORY_LIST: u32 = 0x1;
+pub const PF_PFN_PRIO_REQUEST_VALID_FLAGS: u32 = 0x1;
+STRUCT!{struct PF_PFN_PRIO_REQUEST {
+ Version: ULONG,
+ RequestFlags: ULONG,
+ PfnCount: ULONG_PTR,
+ MemInfo: SYSTEM_MEMORY_LIST_INFORMATION,
+ PageData: [MMPFN_IDENTITY; 256],
+}}
+pub type PPF_PFN_PRIO_REQUEST = *mut PF_PFN_PRIO_REQUEST;
+ENUM!{enum PFS_PRIVATE_PAGE_SOURCE_TYPE {
+ PfsPrivateSourceKernel = 0,
+ PfsPrivateSourceSession = 1,
+ PfsPrivateSourceProcess = 2,
+ PfsPrivateSourceMax = 3,
+}}
+UNION!{union PFS_PRIVATE_PAGE_SOURCE_u {
+ SessionId: ULONG,
+ ProcessId: ULONG,
+}}
+STRUCT!{struct PFS_PRIVATE_PAGE_SOURCE {
+ Type: PFS_PRIVATE_PAGE_SOURCE_TYPE,
+ u: PFS_PRIVATE_PAGE_SOURCE_u,
+ ImagePathHash: ULONG,
+ UniqueProcessHash: ULONG_PTR,
+}}
+UNION!{union PF_PRIVSOURCE_INFO_u {
+ WsSwapPages: ULONG_PTR,
+ SessionPagedPoolPages: ULONG_PTR,
+ StoreSizePages: ULONG_PTR,
+}}
+pub type PPFS_PRIVATE_PAGE_SOURCE = *mut PFS_PRIVATE_PAGE_SOURCE;
+STRUCT!{struct PF_PRIVSOURCE_INFO {
+ DbInfo: PFS_PRIVATE_PAGE_SOURCE,
+ EProcess: PVOID,
+ WsPrivatePages: SIZE_T,
+ TotalPrivatePages: SIZE_T,
+ SessionID: ULONG,
+ ImageName: [CHAR; 16],
+ u: PF_PRIVSOURCE_INFO_u,
+ WsTotalPages: ULONG_PTR,
+ DeepFreezeTimeMs: ULONG,
+ BitFields: ULONG,
+}}
+BITFIELD!{PF_PRIVSOURCE_INFO BitFields: ULONG [
+ ModernApp set_ModernApp[0..1],
+ DeepFrozen set_DeepFrozen[1..2],
+ Foreground set_Foreground[2..3],
+ PerProcessStore set_PerProcessStore[3..4],
+ Spare set_Spare[4..32],
+]}
+pub type PPF_PRIVSOURCE_INFO = *mut PF_PRIVSOURCE_INFO;
+pub const PF_PRIVSOURCE_QUERY_REQUEST_VERSION: u32 = 3;
+STRUCT!{struct PF_PRIVSOURCE_QUERY_REQUEST {
+ Version: ULONG,
+ Flags: ULONG,
+ InfoCount: ULONG,
+ InfoArray: [PF_PRIVSOURCE_INFO; 1],
+}}
+pub type PPF_PRIVSOURCE_QUERY_REQUEST = *mut PF_PRIVSOURCE_QUERY_REQUEST;
+ENUM!{enum PF_PHASED_SCENARIO_TYPE {
+ PfScenarioTypeNone = 0,
+ PfScenarioTypeStandby = 1,
+ PfScenarioTypeHibernate = 2,
+ PfScenarioTypeFUS = 3,
+ PfScenarioTypeMax = 4,
+}}
+pub const PF_SCENARIO_PHASE_INFO_VERSION: u32 = 4;
+STRUCT!{struct PF_SCENARIO_PHASE_INFO {
+ Version: ULONG,
+ ScenType: PF_PHASED_SCENARIO_TYPE,
+ PhaseId: ULONG,
+ SequenceNumber: ULONG,
+ Flags: ULONG,
+ FUSUserId: ULONG,
+}}
+pub type PPF_SCENARIO_PHASE_INFO = *mut PF_SCENARIO_PHASE_INFO;
+STRUCT!{struct PF_MEMORY_LIST_NODE {
+ Bitfields: ULONGLONG,
+ StandbyLowPageCount: ULONGLONG,
+ StandbyMediumPageCount: ULONGLONG,
+ StandbyHighPageCount: ULONGLONG,
+ FreePageCount: ULONGLONG,
+ ModifiedPageCount: ULONGLONG,
+}}
+BITFIELD!{PF_MEMORY_LIST_NODE Bitfields: ULONGLONG [
+ Node set_Node[0..8],
+ Spare set_Spare[8..64],
+]}
+pub type PPF_MEMORY_LIST_NODE = *mut PF_MEMORY_LIST_NODE;
+pub const PF_MEMORY_LIST_INFO_VERSION: u32 = 1;
+STRUCT!{struct PF_MEMORY_LIST_INFO {
+ Version: ULONG,
+ Size: ULONG,
+ NodeCount: ULONG,
+ Nodes: [PF_MEMORY_LIST_NODE; 1],
+}}
+pub type PPF_MEMORY_LIST_INFO = *mut PF_MEMORY_LIST_INFO;
+STRUCT!{struct PF_PHYSICAL_MEMORY_RANGE {
+ BasePfn: ULONG_PTR,
+ PageCount: ULONG_PTR,
+}}
+pub type PPF_PHYSICAL_MEMORY_RANGE = *mut PF_PHYSICAL_MEMORY_RANGE;
+pub const PF_PHYSICAL_MEMORY_RANGE_INFO_VERSION: u32 = 1;
+STRUCT!{struct PF_PHYSICAL_MEMORY_RANGE_INFO {
+ Version: ULONG,
+ RangeCount: ULONG,
+ Ranges: [PF_PHYSICAL_MEMORY_RANGE; 1],
+}}
+pub type PPF_PHYSICAL_MEMORY_RANGE_INFO = *mut PF_PHYSICAL_MEMORY_RANGE_INFO;
+pub const PF_REPURPOSED_BY_PREFETCH_INFO_VERSION: u32 = 1;
+STRUCT!{struct PF_REPURPOSED_BY_PREFETCH_INFO {
+ Version: ULONG,
+ RepurposedByPrefetch: ULONG,
+}}
+pub type PPF_REPURPOSED_BY_PREFETCH_INFO = *mut PF_REPURPOSED_BY_PREFETCH_INFO;
+ENUM!{enum SUPERFETCH_INFORMATION_CLASS {
+ SuperfetchRetrieveTrace = 1,
+ SuperfetchSystemParameters = 2,
+ SuperfetchLogEvent = 3,
+ SuperfetchGenerateTrace = 4,
+ SuperfetchPrefetch = 5,
+ SuperfetchPfnQuery = 6,
+ SuperfetchPfnSetPriority = 7,
+ SuperfetchPrivSourceQuery = 8,
+ SuperfetchSequenceNumberQuery = 9,
+ SuperfetchScenarioPhase = 10,
+ SuperfetchWorkerPriority = 11,
+ SuperfetchScenarioQuery = 12,
+ SuperfetchScenarioPrefetch = 13,
+ SuperfetchRobustnessControl = 14,
+ SuperfetchTimeControl = 15,
+ SuperfetchMemoryListQuery = 16,
+ SuperfetchMemoryRangesQuery = 17,
+ SuperfetchTracingControl = 18,
+ SuperfetchTrimWhileAgingControl = 19,
+ SuperfetchRepurposedByPrefetch = 20,
+ SuperfetchInformationMax = 21,
+}}
+pub const SUPERFETCH_INFORMATION_VERSION: ULONG = 45;
+pub const SUPERFETCH_INFORMATION_MAGIC: ULONG = 0x6b756843;
+STRUCT!{struct SUPERFETCH_INFORMATION {
+ Version: ULONG,
+ Magic: ULONG,
+ InfoClass: SUPERFETCH_INFORMATION_CLASS,
+ Data: PVOID,
+ Length: ULONG,
+}}
+pub type PSUPERFETCH_INFORMATION = *mut SUPERFETCH_INFORMATION;