mirror of
https://github.com/processhacker/phnt
synced 2026-06-08 16:49:04 +00:00
Update headers for 19H1
This commit is contained in:
@@ -23,7 +23,7 @@ NTSTATUS
|
||||
NTAPI
|
||||
NtDelayExecution(
|
||||
_In_ BOOLEAN Alertable,
|
||||
_In_ PLARGE_INTEGER DelayInterval
|
||||
_In_opt_ PLARGE_INTEGER DelayInterval
|
||||
);
|
||||
|
||||
// Environment values
|
||||
@@ -1042,6 +1042,7 @@ typedef enum _WORKERFACTORYINFOCLASS
|
||||
WorkerFactoryTimeoutWaiters, // since THRESHOLD
|
||||
WorkerFactoryFlags,
|
||||
WorkerFactoryThreadSoftMaximum,
|
||||
WorkerFactoryThreadCpuSets, // since REDSTONE5
|
||||
MaxWorkerFactoryInfoClass
|
||||
} WORKERFACTORYINFOCLASS, *PWORKERFACTORYINFOCLASS;
|
||||
|
||||
@@ -1433,6 +1434,12 @@ typedef enum _SYSTEM_INFORMATION_CLASS
|
||||
SystemSpeculationControlInformation, // SYSTEM_SPECULATION_CONTROL_INFORMATION // (CVE-2017-5715) REDSTONE3 and above.
|
||||
SystemDmaGuardPolicyInformation, // SYSTEM_DMA_GUARD_POLICY_INFORMATION
|
||||
SystemEnclaveLaunchControlInformation, // SYSTEM_ENCLAVE_LAUNCH_CONTROL_INFORMATION
|
||||
SystemWorkloadAllowedCpuSetsInformation, // SYSTEM_WORKLOAD_ALLOWED_CPU_SET_INFORMATION // since REDSTONE5
|
||||
SystemCodeIntegrityUnlockModeInformation,
|
||||
SystemLeapSecondInformation, // SYSTEM_LEAP_SECOND_INFORMATION
|
||||
SystemFlags2Information,
|
||||
SystemSecurityModelInformation, // SYSTEM_SECURITY_MODEL_INFORMATION // since 19H1
|
||||
SystemCodeIntegritySyntheticCacheInformation,
|
||||
MaxSystemInfoClass
|
||||
} SYSTEM_INFORMATION_CLASS;
|
||||
|
||||
@@ -1967,6 +1974,16 @@ typedef struct _EVENT_TRACE_PROFILE_COUNTER_INFORMATION
|
||||
ULONG ProfileSource[1];
|
||||
} EVENT_TRACE_PROFILE_COUNTER_INFORMATION, *PEVENT_TRACE_PROFILE_COUNTER_INFORMATION;
|
||||
|
||||
//typedef struct _PROFILE_SOURCE_INFO
|
||||
//{
|
||||
// ULONG NextEntryOffset;
|
||||
// ULONG Source;
|
||||
// ULONG MinInterval;
|
||||
// ULONG MaxInterval;
|
||||
// PVOID Reserved;
|
||||
// WCHAR Description[1];
|
||||
//} PROFILE_SOURCE_INFO, *PPROFILE_SOURCE_INFO;
|
||||
|
||||
typedef struct _EVENT_TRACE_PROFILE_LIST_INFORMATION
|
||||
{
|
||||
EVENT_TRACE_INFORMATION_CLASS EventTraceInformationClass;
|
||||
@@ -2096,10 +2113,49 @@ typedef struct _SYSTEM_RANGE_START_INFORMATION
|
||||
PVOID SystemRangeStart;
|
||||
} SYSTEM_RANGE_START_INFORMATION, *PSYSTEM_RANGE_START_INFORMATION;
|
||||
|
||||
typedef struct _SYSTEM_VERIFIER_INFORMATION_LEGACY // pre-19H1
|
||||
{
|
||||
ULONG NextEntryOffset;
|
||||
ULONG Level;
|
||||
UNICODE_STRING DriverName;
|
||||
|
||||
ULONG RaiseIrqls;
|
||||
ULONG AcquireSpinLocks;
|
||||
ULONG SynchronizeExecutions;
|
||||
ULONG AllocationsAttempted;
|
||||
|
||||
ULONG AllocationsSucceeded;
|
||||
ULONG AllocationsSucceededSpecialPool;
|
||||
ULONG AllocationsWithNoTag;
|
||||
ULONG TrimRequests;
|
||||
|
||||
ULONG Trims;
|
||||
ULONG AllocationsFailed;
|
||||
ULONG AllocationsFailedDeliberately;
|
||||
ULONG Loads;
|
||||
|
||||
ULONG Unloads;
|
||||
ULONG UnTrackedPool;
|
||||
ULONG CurrentPagedPoolAllocations;
|
||||
ULONG CurrentNonPagedPoolAllocations;
|
||||
|
||||
ULONG PeakPagedPoolAllocations;
|
||||
ULONG PeakNonPagedPoolAllocations;
|
||||
|
||||
SIZE_T PagedPoolUsageInBytes;
|
||||
SIZE_T NonPagedPoolUsageInBytes;
|
||||
SIZE_T PeakPagedPoolUsageInBytes;
|
||||
SIZE_T PeakNonPagedPoolUsageInBytes;
|
||||
} SYSTEM_VERIFIER_INFORMATION_LEGACY, *PSYSTEM_VERIFIER_INFORMATION_LEGACY;
|
||||
|
||||
typedef struct _SYSTEM_VERIFIER_INFORMATION
|
||||
{
|
||||
ULONG NextEntryOffset;
|
||||
ULONG Level;
|
||||
ULONG RuleClasses[2];
|
||||
ULONG TriageContext;
|
||||
ULONG AreAllDriversBeingVerified;
|
||||
|
||||
UNICODE_STRING DriverName;
|
||||
|
||||
ULONG RaiseIrqls;
|
||||
@@ -2332,6 +2388,9 @@ typedef struct _SYSTEM_BOOT_ENVIRONMENT_INFORMATION
|
||||
ULONGLONG DbgHiberBoot : 1;
|
||||
ULONGLONG DbgSoftBoot : 1;
|
||||
ULONGLONG DbgMeasuredLaunch : 1;
|
||||
ULONGLONG DbgMeasuredLaunchCapable : 1; // 19H1
|
||||
ULONGLONG DbgSystemHiveReplace : 1;
|
||||
ULONGLONG DbgMeasuredLaunchSmmProtections : 1;
|
||||
};
|
||||
};
|
||||
} SYSTEM_BOOT_ENVIRONMENT_INFORMATION, *PSYSTEM_BOOT_ENVIRONMENT_INFORMATION;
|
||||
@@ -2590,7 +2649,22 @@ typedef struct _MEMORY_SCRUB_INFORMATION
|
||||
} MEMORY_SCRUB_INFORMATION, *PMEMORY_SCRUB_INFORMATION;
|
||||
|
||||
// private
|
||||
typedef struct _PEBS_DS_SAVE_AREA
|
||||
typedef struct _PEBS_DS_SAVE_AREA32
|
||||
{
|
||||
ULONG BtsBufferBase;
|
||||
ULONG BtsIndex;
|
||||
ULONG BtsAbsoluteMaximum;
|
||||
ULONG BtsInterruptThreshold;
|
||||
ULONG PebsBufferBase;
|
||||
ULONG PebsIndex;
|
||||
ULONG PebsAbsoluteMaximum;
|
||||
ULONG PebsInterruptThreshold;
|
||||
ULONG PebsGpCounterReset[8];
|
||||
ULONG PebsFixedCounterReset[4];
|
||||
} PEBS_DS_SAVE_AREA32, *PPEBS_DS_SAVE_AREA32;
|
||||
|
||||
// private
|
||||
typedef struct _PEBS_DS_SAVE_AREA64
|
||||
{
|
||||
ULONGLONG BtsBufferBase;
|
||||
ULONGLONG BtsIndex;
|
||||
@@ -2600,10 +2674,15 @@ typedef struct _PEBS_DS_SAVE_AREA
|
||||
ULONGLONG PebsIndex;
|
||||
ULONGLONG PebsAbsoluteMaximum;
|
||||
ULONGLONG PebsInterruptThreshold;
|
||||
ULONGLONG PebsCounterReset0;
|
||||
ULONGLONG PebsCounterReset1;
|
||||
ULONGLONG PebsCounterReset2;
|
||||
ULONGLONG PebsCounterReset3;
|
||||
ULONGLONG PebsGpCounterReset[8];
|
||||
ULONGLONG PebsFixedCounterReset[4];
|
||||
} PEBS_DS_SAVE_AREA64, *PPEBS_DS_SAVE_AREA64;
|
||||
|
||||
// private
|
||||
typedef union _PEBS_DS_SAVE_AREA
|
||||
{
|
||||
PEBS_DS_SAVE_AREA32 As32Bit;
|
||||
PEBS_DS_SAVE_AREA64 As64Bit;
|
||||
} PEBS_DS_SAVE_AREA, *PPEBS_DS_SAVE_AREA;
|
||||
|
||||
// private
|
||||
@@ -2780,7 +2859,7 @@ typedef union _ENERGY_STATE_DURATION
|
||||
|
||||
typedef struct _PROCESS_ENERGY_VALUES
|
||||
{
|
||||
ULONGLONG Cycles[2][4];
|
||||
ULONGLONG Cycles[4][2];
|
||||
ULONGLONG DiskEnergy;
|
||||
ULONGLONG NetworkTailEnergy;
|
||||
ULONGLONG MBBTailEnergy;
|
||||
@@ -2815,7 +2894,7 @@ typedef struct _PROCESS_ENERGY_VALUES_EXTENSION
|
||||
{
|
||||
union
|
||||
{
|
||||
TIMELINE_BITMAP Timelines[14]; // 9 for REDSTONE2, 14 for REDSTONE3
|
||||
TIMELINE_BITMAP Timelines[14]; // 9 for REDSTONE2, 14 for REDSTONE3/4/5
|
||||
struct
|
||||
{
|
||||
TIMELINE_BITMAP CpuTimeline;
|
||||
@@ -2956,7 +3035,7 @@ typedef struct _SYSTEM_HYPERVISOR_DETAIL_INFORMATION
|
||||
// private
|
||||
typedef struct _SYSTEM_PROCESSOR_CYCLE_STATS_INFORMATION
|
||||
{
|
||||
ULONGLONG Cycles[2][4];
|
||||
ULONGLONG Cycles[4][2];
|
||||
} SYSTEM_PROCESSOR_CYCLE_STATS_INFORMATION, *PSYSTEM_PROCESSOR_CYCLE_STATS_INFORMATION;
|
||||
|
||||
// private
|
||||
@@ -2991,9 +3070,10 @@ typedef struct _SYSTEM_ISOLATED_USER_MODE_INFORMATION
|
||||
BOOLEAN DebugEnabled : 1;
|
||||
BOOLEAN FirmwarePageProtection : 1;
|
||||
BOOLEAN EncryptionKeyAvailable : 1;
|
||||
BOOLEAN SpareFlags : 1;
|
||||
BOOLEAN SpareFlags : 2;
|
||||
BOOLEAN TrustletRunning : 1;
|
||||
BOOLEAN SpareFlags2 : 1;
|
||||
BOOLEAN HvciDisableAllowed : 1;
|
||||
BOOLEAN SpareFlags2 : 6;
|
||||
BOOLEAN Spare0[6];
|
||||
ULONGLONG Spare1;
|
||||
} SYSTEM_ISOLATED_USER_MODE_INFORMATION, *PSYSTEM_ISOLATED_USER_MODE_INFORMATION;
|
||||
@@ -3144,10 +3224,9 @@ typedef struct _SYSTEM_CODEINTEGRITY_UNLOCK_INFORMATION
|
||||
struct
|
||||
{
|
||||
ULONG Locked : 1;
|
||||
ULONG Unlockable : 1;
|
||||
ULONG UnlockApplied : 1;
|
||||
ULONG UnlockIdValid : 1; // REDSTONE4
|
||||
ULONG Reserved : 28;
|
||||
ULONG UnlockApplied : 1; // Unlockable field removed 19H1
|
||||
ULONG UnlockIdValid : 1;
|
||||
ULONG Reserved : 29;
|
||||
};
|
||||
};
|
||||
UCHAR UnlockId[32]; // REDSTONE4
|
||||
@@ -3183,7 +3262,10 @@ typedef struct _SYSTEM_KERNEL_VA_SHADOW_INFORMATION
|
||||
ULONG KvaShadowInvpcid : 1;
|
||||
ULONG KvaShadowRequired : 1; // REDSTONE4
|
||||
ULONG KvaShadowRequiredAvailable : 1;
|
||||
ULONG Reserved : 26;
|
||||
ULONG InvalidPteBit : 6;
|
||||
ULONG L1DataCacheFlushSupported : 1;
|
||||
ULONG L1TerminalFaultMitigationPresent : 1;
|
||||
ULONG Reserved : 18;
|
||||
};
|
||||
};
|
||||
} SYSTEM_KERNEL_VA_SHADOW_INFORMATION, *PSYSTEM_KERNEL_VA_SHADOW_INFORMATION;
|
||||
@@ -3218,12 +3300,23 @@ typedef struct _SYSTEM_SPECULATION_CONTROL_INFORMATION
|
||||
ULONG IbrsPresent : 1;
|
||||
ULONG StibpPresent : 1;
|
||||
ULONG SmepPresent : 1;
|
||||
ULONG MemoryDisambiguationDisableAvailable : 1; // REDSTONE4 (CVE-2018-3639)
|
||||
ULONG MemoryDisambiguationDisableSupported : 1;
|
||||
ULONG MemoryDisambiguationDisabledSystemWide : 1;
|
||||
ULONG MemoryDisambiguationDisabledKernel : 1;
|
||||
ULONG MemoryDisambiguationDisableRequired : 1;
|
||||
ULONG Reserved : 19;
|
||||
ULONG SpeculativeStoreBypassDisableAvailable : 1; // REDSTONE4 (CVE-2018-3639)
|
||||
ULONG SpeculativeStoreBypassDisableSupported : 1;
|
||||
ULONG SpeculativeStoreBypassDisabledSystemWide : 1;
|
||||
ULONG SpeculativeStoreBypassDisabledKernel : 1;
|
||||
ULONG SpeculativeStoreBypassDisableRequired : 1;
|
||||
ULONG BpbDisabledKernelToUser : 1;
|
||||
ULONG SpecCtrlRetpolineEnabled : 1;
|
||||
ULONG SpecCtrlImportOptimizationEnabled : 1;
|
||||
ULONG EnhancedIbrs : 1; // since 19H1
|
||||
ULONG HvL1tfStatusAvailable : 1;
|
||||
ULONG HvL1tfProcessorNotAffected : 1;
|
||||
ULONG HvL1tfMigitationEnabled : 1;
|
||||
ULONG HvL1tfMigitationNotEnabled_Hardware : 1;
|
||||
ULONG HvL1tfMigitationNotEnabled_LoadOption : 1;
|
||||
ULONG HvL1tfMigitationNotEnabled_CoreScheduler : 1;
|
||||
ULONG EnhancedIbrsReported : 1;
|
||||
ULONG Reserved : 8;
|
||||
};
|
||||
};
|
||||
} SYSTEM_SPECULATION_CONTROL_INFORMATION, *PSYSTEM_SPECULATION_CONTROL_INFORMATION;
|
||||
@@ -3240,6 +3333,28 @@ typedef struct _SYSTEM_ENCLAVE_LAUNCH_CONTROL_INFORMATION
|
||||
UCHAR EnclaveLaunchSigner[32];
|
||||
} SYSTEM_ENCLAVE_LAUNCH_CONTROL_INFORMATION, *PSYSTEM_ENCLAVE_LAUNCH_CONTROL_INFORMATION;
|
||||
|
||||
// private
|
||||
typedef struct _SYSTEM_WORKLOAD_ALLOWED_CPU_SET_INFORMATION
|
||||
{
|
||||
ULONGLONG WorkloadClass;
|
||||
ULONGLONG CpuSets[1];
|
||||
} SYSTEM_WORKLOAD_ALLOWED_CPU_SET_INFORMATION, *PSYSTEM_WORKLOAD_ALLOWED_CPU_SET_INFORMATION;
|
||||
|
||||
// private
|
||||
typedef struct _SYSTEM_SECURITY_MODEL_INFORMATION
|
||||
{
|
||||
union
|
||||
{
|
||||
ULONG SecurityModelFlags;
|
||||
struct
|
||||
{
|
||||
ULONG SModeAdminlessEnabled : 1;
|
||||
ULONG AllowDeviceOwnerProtectionDowngrade : 1;
|
||||
ULONG Reserved : 30;
|
||||
};
|
||||
};
|
||||
} SYSTEM_SECURITY_MODEL_INFORMATION, *PSYSTEM_SECURITY_MODEL_INFORMATION;
|
||||
|
||||
#if (PHNT_MODE != PHNT_MODE_KERNEL)
|
||||
|
||||
NTSYSCALLAPI
|
||||
@@ -3564,7 +3679,8 @@ typedef struct _KUSER_SHARED_DATA
|
||||
UCHAR Reserved : 2;
|
||||
};
|
||||
};
|
||||
UCHAR Reserved6[2];
|
||||
|
||||
USHORT CyclesPerYield;
|
||||
|
||||
volatile ULONG ActiveConsoleId;
|
||||
|
||||
@@ -3662,38 +3778,20 @@ typedef struct _KUSER_SHARED_DATA
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TickCountMultiplier) == 0x4);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, InterruptTime) == 0x8);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SystemTime) == 0x14);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TimeZoneBias) == 0x20);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ImageNumberLow) == 0x2c);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ImageNumberHigh) == 0x2e);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, NtSystemRoot) == 0x30);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, MaxStackTraceDepth) == 0x238);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, CryptoExponent) == 0x23c);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TimeZoneId) == 0x240);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, LargePageMinimum) == 0x244);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, NtProductType) == 0x264);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ProductTypeIsValid) == 0x268);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, NtMajorVersion) == 0x26c);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, NtMinorVersion) == 0x270);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ProcessorFeatures) == 0x274);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, Reserved1) == 0x2b4);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, Reserved3) == 0x2b8);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TimeSlip) == 0x2bc);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, AlternativeArchitecture) == 0x2c0);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SystemExpirationDate) == 0x2c8);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SuiteMask) == 0x2d0);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, KdDebuggerEnabled) == 0x2d4);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ActiveConsoleId) == 0x2d8);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, DismountCount) == 0x2dc);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ComPlusPackage) == 0x2e0);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, LastSystemRITEventTickCount) == 0x2e4);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, NumberOfPhysicalPages) == 0x2e8);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SafeBootMode) == 0x2ec);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TestRetInstruction) == 0x2f8);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SystemCallPad) == 0x310);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TickCount) == 0x320);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TickCountQuad) == 0x320);
|
||||
C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, XState) == 0x3d8);
|
||||
//C_ASSERT(sizeof(KUSER_SHARED_DATA) == 0x708);
|
||||
//C_ASSERT(sizeof(KUSER_SHARED_DATA) == 0x70C); // VS2017 has some weird issue with this.
|
||||
|
||||
#define USER_SHARED_DATA ((KUSER_SHARED_DATA * const)0x7ffe0000)
|
||||
|
||||
|
||||
@@ -256,6 +256,10 @@ typedef enum _FILE_INFORMATION_CLASS
|
||||
FileMemoryPartitionInformation, // FILE_MEMORY_PARTITION_INFORMATION // since REDSTONE3
|
||||
FileStatLxInformation, // FILE_STAT_LX_INFORMATION // since REDSTONE4
|
||||
FileCaseSensitiveInformation, // FILE_CASE_SENSITIVE_INFORMATION
|
||||
FileLinkInformationEx, // since REDSTONE5
|
||||
FileLinkInformationExBypassAccessCheck,
|
||||
FileStorageReserveIdInformation,
|
||||
FileCaseSensitiveInformationForceAccessCheck,
|
||||
FileMaximumInformation
|
||||
} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
|
||||
|
||||
@@ -938,6 +942,7 @@ typedef enum _FSINFOCLASS
|
||||
FileFsSectorSizeInformation, // FILE_FS_SECTOR_SIZE_INFORMATION // since WIN8
|
||||
FileFsDataCopyInformation, // FILE_FS_DATA_COPY_INFORMATION
|
||||
FileFsMetadataSizeInformation, // FILE_FS_METADATA_SIZE_INFORMATION // since THRESHOLD
|
||||
FileFsFullSizeInformationEx, // FILE_FS_FULL_SIZE_INFORMATION_EX // since REDSTONE5
|
||||
FileFsMaximumInformation
|
||||
} FSINFOCLASS, *PFSINFOCLASS;
|
||||
|
||||
@@ -1041,6 +1046,7 @@ typedef struct _FILE_FS_DATA_COPY_INFORMATION
|
||||
ULONG NumberOfCopies;
|
||||
} FILE_FS_DATA_COPY_INFORMATION, *PFILE_FS_DATA_COPY_INFORMATION;
|
||||
|
||||
// private
|
||||
typedef struct _FILE_FS_METADATA_SIZE_INFORMATION
|
||||
{
|
||||
LARGE_INTEGER TotalMetadataAllocationUnits;
|
||||
@@ -1048,6 +1054,24 @@ typedef struct _FILE_FS_METADATA_SIZE_INFORMATION
|
||||
ULONG BytesPerSector;
|
||||
} FILE_FS_METADATA_SIZE_INFORMATION, *PFILE_FS_METADATA_SIZE_INFORMATION;
|
||||
|
||||
// private
|
||||
typedef struct _FILE_FS_FULL_SIZE_INFORMATION_EX
|
||||
{
|
||||
ULONGLONG ActualTotalAllocationUnits;
|
||||
ULONGLONG ActualAvailableAllocationUnits;
|
||||
ULONGLONG ActualPoolUnavailableAllocationUnits;
|
||||
ULONGLONG CallerTotalAllocationUnits;
|
||||
ULONGLONG CallerAvailableAllocationUnits;
|
||||
ULONGLONG CallerPoolUnavailableAllocationUnits;
|
||||
ULONGLONG UsedAllocationUnits;
|
||||
ULONGLONG TotalReservedAllocationUnits;
|
||||
ULONGLONG VolumeStorageReserveAllocationUnits;
|
||||
ULONGLONG AvailableCommittedAllocationUnits;
|
||||
ULONGLONG PoolAvailableAllocationUnits;
|
||||
ULONG SectorsPerAllocationUnit;
|
||||
ULONG BytesPerSector;
|
||||
} FILE_FS_FULL_SIZE_INFORMATION_EX, *PFILE_FS_FULL_SIZE_INFORMATION_EX;
|
||||
|
||||
// System calls
|
||||
|
||||
NTSYSCALLAPI
|
||||
@@ -1130,6 +1154,7 @@ NtFlushBuffersFile(
|
||||
|
||||
#define FLUSH_FLAGS_FILE_DATA_ONLY 0x00000001
|
||||
#define FLUSH_FLAGS_NO_SYNC 0x00000002
|
||||
#define FLUSH_FLAGS_FILE_DATA_SYNC_ONLY 0x00000004 // REDSTONE1
|
||||
|
||||
#if (PHNT_VERSION >= PHNT_WIN8)
|
||||
NTSYSCALLAPI
|
||||
@@ -1166,6 +1191,19 @@ NtSetInformationFile(
|
||||
_In_ FILE_INFORMATION_CLASS FileInformationClass
|
||||
);
|
||||
|
||||
#if (PHNT_VERSION >= PHNT_REDSTONE2)
|
||||
NTSYSCALLAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
NtQueryInformationByName(
|
||||
_In_ POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
_Out_ PIO_STATUS_BLOCK IoStatusBlock,
|
||||
_Out_writes_bytes_(Length) PVOID FileInformation,
|
||||
_In_ ULONG Length,
|
||||
_In_ FILE_INFORMATION_CLASS FileInformationClass
|
||||
);
|
||||
#endif
|
||||
|
||||
NTSYSCALLAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
@@ -1490,7 +1528,7 @@ NTAPI
|
||||
NtQueryIoCompletion(
|
||||
_In_ HANDLE IoCompletionHandle,
|
||||
_In_ IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass,
|
||||
_Out_writes_bytes_(IoCompletionInformation) PVOID IoCompletionInformation,
|
||||
_Out_writes_bytes_(IoCompletionInformationLength) PVOID IoCompletionInformation,
|
||||
_In_ ULONG IoCompletionInformationLength,
|
||||
_Out_opt_ PULONG ReturnLength
|
||||
);
|
||||
|
||||
@@ -171,7 +171,8 @@ typedef struct _LDR_DATA_TABLE_ENTRY
|
||||
ULONG CorImage : 1;
|
||||
ULONG DontRelocate : 1;
|
||||
ULONG CorILOnly : 1;
|
||||
ULONG ReservedFlags5 : 3;
|
||||
ULONG ChpeImage : 1;
|
||||
ULONG ReservedFlags5 : 2;
|
||||
ULONG Redirected : 1;
|
||||
ULONG ReservedFlags6 : 2;
|
||||
ULONG CompatDatabaseProcessed : 1;
|
||||
@@ -547,6 +548,14 @@ LdrUnregisterDllNotification(
|
||||
|
||||
// end_msdn
|
||||
|
||||
// rev
|
||||
NTSYSAPI
|
||||
PUNICODE_STRING
|
||||
NTAPI
|
||||
LdrStandardizeSystemPath(
|
||||
_In_ PUNICODE_STRING SystemPath
|
||||
);
|
||||
|
||||
// private
|
||||
typedef struct _PS_MITIGATION_OPTIONS_MAP
|
||||
{
|
||||
@@ -927,6 +936,16 @@ LdrControlFlowGuardEnforced(
|
||||
VOID
|
||||
);
|
||||
|
||||
#if (PHNT_VERSION >= PHNT_19H1)
|
||||
// rev
|
||||
NTSYSAPI
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
LdrIsModuleSxsRedirected(
|
||||
_In_ PVOID DllHandle
|
||||
);
|
||||
#endif
|
||||
|
||||
#endif // (PHNT_MODE != PHNT_MODE_KERNEL)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -146,6 +146,7 @@ typedef struct _MEMORY_REGION_INFORMATION
|
||||
};
|
||||
SIZE_T RegionSize;
|
||||
SIZE_T CommitSize;
|
||||
ULONG_PTR PartitionId; // 19H1
|
||||
} MEMORY_REGION_INFORMATION, *PMEMORY_REGION_INFORMATION;
|
||||
|
||||
// private
|
||||
@@ -175,8 +176,9 @@ typedef struct _MEMORY_WORKING_SET_EX_BLOCK
|
||||
ULONG_PTR Reserved : 3;
|
||||
ULONG_PTR SharedOriginal : 1;
|
||||
ULONG_PTR Bad : 1;
|
||||
ULONG_PTR Win32GraphicsProtection : 4; // 19H1
|
||||
#ifdef _WIN64
|
||||
ULONG_PTR ReservedUlong : 32;
|
||||
ULONG_PTR ReservedUlong : 28;
|
||||
#endif
|
||||
};
|
||||
struct
|
||||
@@ -269,7 +271,7 @@ typedef struct _MEMORY_FRAME_INFORMATION
|
||||
{
|
||||
ULONGLONG UseDescription : 4; // MMPFNUSE_*
|
||||
ULONGLONG ListDescription : 3; // MMPFNLIST_*
|
||||
ULONGLONG Reserved0 : 1; // reserved for future expansion
|
||||
ULONGLONG Cold : 1; // 19H1
|
||||
ULONGLONG Pinned : 1; // 1 - pinned, 0 - not pinned
|
||||
ULONGLONG DontUse : 48; // *_INFORMATION overlay
|
||||
ULONGLONG Priority : 3; // rev
|
||||
@@ -516,7 +518,8 @@ typedef enum _VIRTUAL_MEMORY_INFORMATION_CLASS
|
||||
VmPrefetchInformation, // ULONG
|
||||
VmPagePriorityInformation,
|
||||
VmCfgCallTargetInformation, // CFG_CALL_TARGET_LIST_INFORMATION // REDSTONE2
|
||||
VmPageDirtyStateInformation // REDSTONE3
|
||||
VmPageDirtyStateInformation, // REDSTONE3
|
||||
VmImageHotPatchInformation // 19H1
|
||||
} VIRTUAL_MEMORY_INFORMATION_CLASS;
|
||||
|
||||
typedef struct _MEMORY_RANGE_ENTRY
|
||||
@@ -531,6 +534,8 @@ typedef struct _CFG_CALL_TARGET_LIST_INFORMATION
|
||||
ULONG Reserved;
|
||||
PULONG NumberOfEntriesProcessed;
|
||||
PCFG_CALL_TARGET_INFO CallTargetInfo;
|
||||
PVOID Section; // since REDSTONE5
|
||||
ULONGLONG FileOffset;
|
||||
} CFG_CALL_TARGET_LIST_INFORMATION, *PCFG_CALL_TARGET_LIST_INFORMATION;
|
||||
#endif
|
||||
// end_private
|
||||
@@ -592,6 +597,23 @@ NtCreateSection(
|
||||
_In_opt_ HANDLE FileHandle
|
||||
);
|
||||
|
||||
#if (PHNT_VERSION >= PHNT_REDSTONE5)
|
||||
NTSYSCALLAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
NtCreateSectionEx(
|
||||
_Out_ PHANDLE SectionHandle,
|
||||
_In_ ACCESS_MASK DesiredAccess,
|
||||
_In_opt_ POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
_In_opt_ PLARGE_INTEGER MaximumSize,
|
||||
_In_ ULONG SectionPageProtection,
|
||||
_In_ ULONG AllocationAttributes,
|
||||
_In_opt_ HANDLE FileHandle,
|
||||
_In_ PMEM_EXTENDED_PARAMETER ExtendedParameters,
|
||||
_In_ ULONG ExtendedParameterCount
|
||||
);
|
||||
#endif
|
||||
|
||||
NTSYSCALLAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
|
||||
@@ -49,10 +49,12 @@ typedef enum _OBJECT_INFORMATION_CLASS
|
||||
MaxObjectInfoClass
|
||||
} OBJECT_INFORMATION_CLASS;
|
||||
#else
|
||||
#define ObjectBasicInformation 0
|
||||
#define ObjectNameInformation 1
|
||||
#define ObjectTypesInformation 3
|
||||
#define ObjectHandleFlagInformation 4
|
||||
#define ObjectSessionInformation 5
|
||||
#define ObjectSessionObjectInformation 6
|
||||
#endif
|
||||
|
||||
typedef struct _OBJECT_BASIC_INFORMATION
|
||||
|
||||
+25
-9
@@ -109,7 +109,8 @@ typedef struct _PEB
|
||||
ULONG ProcessUsingFTH : 1;
|
||||
ULONG ProcessPreviouslyThrottled : 1;
|
||||
ULONG ProcessCurrentlyThrottled : 1;
|
||||
ULONG ReservedBits0 : 25;
|
||||
ULONG ProcessImagesHotPatched : 1; // REDSTONE5
|
||||
ULONG ReservedBits0 : 24;
|
||||
};
|
||||
};
|
||||
union
|
||||
@@ -117,7 +118,7 @@ typedef struct _PEB
|
||||
PVOID KernelCallbackTable;
|
||||
PVOID UserSharedInfoPtr;
|
||||
};
|
||||
ULONG SystemReserved[1];
|
||||
ULONG SystemReserved;
|
||||
ULONG AtlThunkSListPtr32;
|
||||
PAPI_SET_NAMESPACE ApiSetMap;
|
||||
ULONG TlsExpansionCounter;
|
||||
@@ -182,11 +183,13 @@ typedef struct _PEB
|
||||
|
||||
SIZE_T MinimumStackCommit;
|
||||
|
||||
PVOID *FlsCallback;
|
||||
LIST_ENTRY FlsListHead;
|
||||
PVOID FlsBitmap;
|
||||
ULONG FlsBitmapBits[FLS_MAXIMUM_AVAILABLE / (sizeof(ULONG) * 8)];
|
||||
ULONG FlsHighIndex;
|
||||
PVOID SparePointers[4]; // 19H1 (previously FlsCallback to FlsHighIndex)
|
||||
ULONG SpareUlongs[5]; // 19H1
|
||||
//PVOID* FlsCallback;
|
||||
//LIST_ENTRY FlsListHead;
|
||||
//PVOID FlsBitmap;
|
||||
//ULONG FlsBitmapBits[FLS_MAXIMUM_AVAILABLE / (sizeof(ULONG) * 8)];
|
||||
//ULONG FlsHighIndex;
|
||||
|
||||
PVOID WerRegistrationData;
|
||||
PVOID WerShipAssertPtr;
|
||||
@@ -212,16 +215,29 @@ typedef struct _PEB
|
||||
ULONG CloudFileDiagFlags; // REDSTONE4
|
||||
CHAR PlaceholderCompatibilityMode;
|
||||
CHAR PlaceholderCompatibilityModeReserved[7];
|
||||
struct _LEAP_SECOND_DATA *LeapSecondData; // REDSTONE5
|
||||
union
|
||||
{
|
||||
ULONG LeapSecondFlags;
|
||||
struct
|
||||
{
|
||||
ULONG SixtySecondEnabled : 1;
|
||||
ULONG Reserved : 31;
|
||||
};
|
||||
};
|
||||
ULONG NtGlobalFlag2;
|
||||
} PEB, *PPEB;
|
||||
|
||||
#ifdef _WIN64
|
||||
C_ASSERT(FIELD_OFFSET(PEB, SessionId) == 0x2C0);
|
||||
//C_ASSERT(sizeof(PEB) == 0x7B0); // REDSTONE3
|
||||
C_ASSERT(sizeof(PEB) == 0x7B8); // REDSTONE4
|
||||
//C_ASSERT(sizeof(PEB) == 0x7B8); // REDSTONE4
|
||||
C_ASSERT(sizeof(PEB) == 0x7C8); // REDSTONE5 // 19H1
|
||||
#else
|
||||
C_ASSERT(FIELD_OFFSET(PEB, SessionId) == 0x1D4);
|
||||
//C_ASSERT(sizeof(PEB) == 0x468); // REDSTONE3
|
||||
C_ASSERT(sizeof(PEB) == 0x470);
|
||||
//C_ASSERT(sizeof(PEB) == 0x470); // REDSTONE4
|
||||
C_ASSERT(sizeof(PEB) == 0x480); // REDSTONE5 // 19H1
|
||||
#endif
|
||||
|
||||
#define GDI_BATCH_BUFFER_SIZE 310
|
||||
|
||||
@@ -67,7 +67,7 @@ typedef struct _COUNTED_REASON_CONTEXT
|
||||
/** \endcond */
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
typedef enum _POWER_STATE_HANDLER_TYPE
|
||||
{
|
||||
PowerStateSleeping1 = 0,
|
||||
PowerStateSleeping2 = 1,
|
||||
|
||||
@@ -66,7 +66,7 @@ typedef ULONG GDI_HANDLE_BUFFER[GDI_HANDLE_BUFFER_SIZE];
|
||||
typedef ULONG GDI_HANDLE_BUFFER32[GDI_HANDLE_BUFFER_SIZE32];
|
||||
typedef ULONG GDI_HANDLE_BUFFER64[GDI_HANDLE_BUFFER_SIZE64];
|
||||
|
||||
#define FLS_MAXIMUM_AVAILABLE 128
|
||||
//#define FLS_MAXIMUM_AVAILABLE 128
|
||||
#define TLS_MINIMUM_AVAILABLE 64
|
||||
#define TLS_EXPANSION_SLOTS 1024
|
||||
|
||||
@@ -162,7 +162,7 @@ typedef enum _PROCESSINFOCLASS
|
||||
ProcessHandleInformation, // q: PROCESS_HANDLE_SNAPSHOT_INFORMATION // since WIN8
|
||||
ProcessMitigationPolicy, // s: PROCESS_MITIGATION_POLICY_INFORMATION
|
||||
ProcessDynamicFunctionTableInformation,
|
||||
ProcessHandleCheckingMode,
|
||||
ProcessHandleCheckingMode, // qs: ULONG; s: 0 disables, otherwise enables
|
||||
ProcessKeepAliveCount, // q: PROCESS_KEEPALIVE_COUNT_INFORMATION
|
||||
ProcessRevokeFileHandles, // s: PROCESS_REVOKE_FILE_HANDLES_INFORMATION
|
||||
ProcessWorkingSetControl, // s: PROCESS_WORKING_SET_CONTROL
|
||||
@@ -188,7 +188,7 @@ typedef enum _PROCESSINFOCLASS
|
||||
ProcessActivityThrottleState, // PROCESS_ACTIVITY_THROTTLE_STATE
|
||||
ProcessActivityThrottlePolicy, // PROCESS_ACTIVITY_THROTTLE_POLICY
|
||||
ProcessWin32kSyscallFilterInformation,
|
||||
ProcessDisableSystemAllowedCpuSets,
|
||||
ProcessDisableSystemAllowedCpuSets, // 80
|
||||
ProcessWakeInformation, // PROCESS_WAKE_INFORMATION
|
||||
ProcessEnergyTrackingState, // PROCESS_ENERGY_TRACKING_STATE
|
||||
ProcessManageWritesToExecutableMemory, // MANAGE_WRITES_TO_EXECUTABLE_MEMORY // since REDSTONE3
|
||||
@@ -198,9 +198,16 @@ typedef enum _PROCESSINFOCLASS
|
||||
ProcessEnableReadWriteVmLogging, // PROCESS_READWRITEVM_LOGGING_INFORMATION
|
||||
ProcessUptimeInformation, // PROCESS_UPTIME_INFORMATION
|
||||
ProcessImageSection,
|
||||
ProcessDebugAuthInformation, // since REDSTONE4
|
||||
ProcessDebugAuthInformation, // since REDSTONE4 // 90
|
||||
ProcessSystemResourceManagement, // PROCESS_SYSTEM_RESOURCE_MANAGEMENT
|
||||
ProcessSequenceNumber, // q: ULONGLONG
|
||||
ProcessLoaderDetour, // since REDSTONE5
|
||||
ProcessSecurityDomainInformation, // PROCESS_SECURITY_DOMAIN_INFORMATION
|
||||
ProcessCombineSecurityDomainsInformation, // PROCESS_COMBINE_SECURITY_DOMAINS_INFORMATION
|
||||
ProcessEnableLogging, // PROCESS_LOGGING_INFORMATION
|
||||
ProcessLeapSecondInformation, // PROCESS_LEAP_SECOND_INFORMATION
|
||||
ProcessFiberShadowStackAllocation, // PROCESS_FIBER_SHADOW_STACK_ALLOCATION_INFORMATION // since 19H1
|
||||
ProcessFreeFiberShadowStackAllocation, // PROCESS_FREE_FIBER_SHADOW_STACK_ALLOCATION_INFORMATION
|
||||
MaxProcessInfoClass
|
||||
} PROCESSINFOCLASS;
|
||||
#endif
|
||||
@@ -251,13 +258,14 @@ typedef enum _THREADINFOCLASS
|
||||
ThreadSystemThreadInformation, // q: SYSTEM_THREAD_INFORMATION // 40
|
||||
ThreadActualGroupAffinity, // since THRESHOLD2
|
||||
ThreadDynamicCodePolicyInfo,
|
||||
ThreadExplicitCaseSensitivity,
|
||||
ThreadExplicitCaseSensitivity, // qs: ULONG; s: 0 disables, otherwise enables
|
||||
ThreadWorkOnBehalfTicket,
|
||||
ThreadSubsystemInformation, // q: SUBSYSTEM_INFORMATION_TYPE // since REDSTONE2
|
||||
ThreadDbgkWerReportActive,
|
||||
ThreadAttachContainer,
|
||||
ThreadManageWritesToExecutableMemory, // MANAGE_WRITES_TO_EXECUTABLE_MEMORY // since REDSTONE3
|
||||
ThreadPowerThrottlingState, // THREAD_POWER_THROTTLING_STATE
|
||||
ThreadWorkloadClass, // THREAD_WORKLOAD_CLASS // since REDSTONE5 // 50
|
||||
MaxThreadInfoClass
|
||||
} THREADINFOCLASS;
|
||||
#endif
|
||||
@@ -651,6 +659,7 @@ typedef struct _PROCESS_MITIGATION_POLICY_INFORMATION
|
||||
PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY SystemCallFilterPolicy;
|
||||
PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY PayloadRestrictionPolicy;
|
||||
PROCESS_MITIGATION_CHILD_PROCESS_POLICY ChildProcessPolicy;
|
||||
PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY SideChannelIsolationPolicy;
|
||||
};
|
||||
} PROCESS_MITIGATION_POLICY_INFORMATION, *PPROCESS_MITIGATION_POLICY_INFORMATION;
|
||||
|
||||
@@ -816,6 +825,7 @@ typedef struct _MANAGE_WRITES_TO_EXECUTABLE_MEMORY
|
||||
ULONG ProcessEnableWriteExceptions : 1;
|
||||
ULONG ThreadAllowWrites : 1;
|
||||
ULONG Spare : 22;
|
||||
PVOID KernelWriteToExecutableSignal; // 19H1
|
||||
} MANAGE_WRITES_TO_EXECUTABLE_MEMORY, *PMANAGE_WRITES_TO_EXECUTABLE_MEMORY;
|
||||
|
||||
#define PROCESS_READWRITEVM_LOGGING_ENABLE_READVM 1
|
||||
@@ -861,6 +871,55 @@ typedef union _PROCESS_SYSTEM_RESOURCE_MANAGEMENT
|
||||
};
|
||||
} PROCESS_SYSTEM_RESOURCE_MANAGEMENT, *PPROCESS_SYSTEM_RESOURCE_MANAGEMENT;
|
||||
|
||||
// private
|
||||
typedef struct _PROCESS_SECURITY_DOMAIN_INFORMATION
|
||||
{
|
||||
ULONGLONG SecurityDomain;
|
||||
} PROCESS_SECURITY_DOMAIN_INFORMATION, *PPROCESS_SECURITY_DOMAIN_INFORMATION;
|
||||
|
||||
// private
|
||||
typedef struct _PROCESS_COMBINE_SECURITY_DOMAINS_INFORMATION
|
||||
{
|
||||
HANDLE ProcessHandle;
|
||||
} PROCESS_COMBINE_SECURITY_DOMAINS_INFORMATION, *PPROCESS_COMBINE_SECURITY_DOMAINS_INFORMATION;
|
||||
|
||||
// private
|
||||
typedef struct _PROCESS_LOGGING_INFORMATION
|
||||
{
|
||||
ULONG Flags;
|
||||
struct
|
||||
{
|
||||
ULONG EnableReadVmLogging : 1;
|
||||
ULONG EnableWriteVmLogging : 1;
|
||||
ULONG EnableProcessSuspendResumeLogging : 1;
|
||||
ULONG EnableThreadSuspendResumeLogging : 1;
|
||||
ULONG Reserved : 28;
|
||||
};
|
||||
} PROCESS_LOGGING_INFORMATION, *PPROCESS_LOGGING_INFORMATION;
|
||||
|
||||
// private
|
||||
typedef struct _PROCESS_LEAP_SECOND_INFORMATION
|
||||
{
|
||||
ULONG Flags;
|
||||
ULONG Reserved;
|
||||
} PROCESS_LEAP_SECOND_INFORMATION, *PPROCESS_LEAP_SECOND_INFORMATION;
|
||||
|
||||
// private
|
||||
typedef struct _PROCESS_FIBER_SHADOW_STACK_ALLOCATION_INFORMATION
|
||||
{
|
||||
ULONGLONG ReserveSize;
|
||||
ULONGLONG CommitSize;
|
||||
ULONG PreferredNode;
|
||||
ULONG Reserved;
|
||||
PVOID Ssp;
|
||||
} PROCESS_FIBER_SHADOW_STACK_ALLOCATION_INFORMATION, *PPROCESS_FIBER_SHADOW_STACK_ALLOCATION_INFORMATION;
|
||||
|
||||
// private
|
||||
typedef struct _PROCESS_FREE_FIBER_SHADOW_STACK_ALLOCATION_INFORMATION
|
||||
{
|
||||
PVOID Ssp;
|
||||
} PROCESS_FREE_FIBER_SHADOW_STACK_ALLOCATION_INFORMATION, *PPROCESS_FREE_FIBER_SHADOW_STACK_ALLOCATION_INFORMATION;
|
||||
|
||||
// end_private
|
||||
|
||||
#endif
|
||||
@@ -987,9 +1046,16 @@ typedef struct _THREAD_UMS_INFORMATION
|
||||
THREAD_UMS_INFORMATION_COMMAND Command;
|
||||
PRTL_UMS_COMPLETION_LIST CompletionList;
|
||||
PRTL_UMS_CONTEXT UmsContext;
|
||||
ULONG Flags;
|
||||
ULONG IsUmsSchedulerThread;
|
||||
ULONG IsUmsWorkerThread;
|
||||
union
|
||||
{
|
||||
ULONG Flags;
|
||||
struct
|
||||
{
|
||||
ULONG IsUmsSchedulerThread : 1;
|
||||
ULONG IsUmsWorkerThread : 1;
|
||||
ULONG SpareBits : 30;
|
||||
};
|
||||
};
|
||||
} THREAD_UMS_INFORMATION, *PTHREAD_UMS_INFORMATION;
|
||||
|
||||
// private
|
||||
@@ -1008,6 +1074,14 @@ typedef enum _SUBSYSTEM_INFORMATION_TYPE
|
||||
} SUBSYSTEM_INFORMATION_TYPE;
|
||||
#endif
|
||||
|
||||
// private
|
||||
typedef enum _THREAD_WORKLOAD_CLASS
|
||||
{
|
||||
ThreadWorkloadClassDefault,
|
||||
ThreadWorkloadClassGraphics,
|
||||
MaxThreadWorkloadClass
|
||||
} THREAD_WORKLOAD_CLASS;
|
||||
|
||||
// Processes
|
||||
|
||||
#if (PHNT_MODE != PHNT_MODE_KERNEL)
|
||||
@@ -1559,7 +1633,10 @@ typedef enum _PS_MITIGATION_OPTION
|
||||
PS_MITIGATION_OPTION_RESTRICT_CHILD_PROCESS_CREATION,
|
||||
PS_MITIGATION_OPTION_IMPORT_ADDRESS_FILTER,
|
||||
PS_MITIGATION_OPTION_MODULE_TAMPERING_PROTECTION,
|
||||
PS_MITIGATION_OPTION_RESTRICT_INDIRECT_BRANCH_PREDICTION
|
||||
PS_MITIGATION_OPTION_RESTRICT_INDIRECT_BRANCH_PREDICTION,
|
||||
PS_MITIGATION_OPTION_SPECULATIVE_STORE_BYPASS_DISABLE, // since REDSTONE5
|
||||
PS_MITIGATION_OPTION_ALLOW_DOWNGRADE_DYNAMIC_CODE_POLICY,
|
||||
PS_MITIGATION_OPTION_CET_SHADOW_STACKS
|
||||
} PS_MITIGATION_OPTION;
|
||||
|
||||
// windows-internals-book:"Chapter 5"
|
||||
|
||||
@@ -1399,7 +1399,7 @@ VOID
|
||||
NTAPI
|
||||
RtlInitEmptyUnicodeString(
|
||||
_Out_ PUNICODE_STRING DestinationString,
|
||||
_In_ PWCHAR Buffer,
|
||||
_In_opt_ PWCHAR Buffer,
|
||||
_In_ USHORT MaximumLength
|
||||
)
|
||||
{
|
||||
@@ -1415,7 +1415,7 @@ FORCEINLINE VOID RtlInitUnicodeString(
|
||||
)
|
||||
{
|
||||
if (SourceString)
|
||||
DestinationString->MaximumLength = (DestinationString->Length = (USHORT)(wcslen(SourceString) * sizeof(WCHAR))) + sizeof(WCHAR);
|
||||
DestinationString->MaximumLength = (DestinationString->Length = (USHORT)(wcslen(SourceString) * sizeof(WCHAR))) + sizeof(UNICODE_NULL);
|
||||
else
|
||||
DestinationString->MaximumLength = DestinationString->Length = 0;
|
||||
|
||||
@@ -2530,6 +2530,11 @@ typedef struct _RTL_USER_PROCESS_PARAMETERS
|
||||
PVOID PackageDependencyData;
|
||||
ULONG ProcessGroupId;
|
||||
ULONG LoaderThreads;
|
||||
|
||||
UNICODE_STRING RedirectionDllName; // REDSTONE4
|
||||
UNICODE_STRING HeapPartitionName; // 19H1
|
||||
ULONG_PTR DefaultThreadpoolCpuSetMasks;
|
||||
ULONG DefaultThreadpoolCpuSetMaskCount;
|
||||
} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
|
||||
|
||||
#define RTL_USER_PROC_PARAMS_NORMALIZED 0x00000001
|
||||
@@ -2628,6 +2633,17 @@ RtlCreateUserProcess(
|
||||
_Out_ PRTL_USER_PROCESS_INFORMATION ProcessInformation
|
||||
);
|
||||
|
||||
NTSYSAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
RtlCreateUserProcessEx(
|
||||
_In_ PUNICODE_STRING NtImagePathName,
|
||||
_In_ PRTL_USER_PROCESS_PARAMETERS ProcessParameters,
|
||||
_In_ BOOLEAN InheritHandles,
|
||||
_Reserved_ ULONG Flags,
|
||||
_Out_ PRTL_USER_PROCESS_INFORMATION ProcessInformation
|
||||
);
|
||||
|
||||
#if (PHNT_VERSION >= PHNT_VISTA)
|
||||
DECLSPEC_NORETURN
|
||||
NTSYSAPI
|
||||
@@ -3268,7 +3284,7 @@ NTAPI
|
||||
RtlSetEnvironmentVariable(
|
||||
_In_opt_ PVOID *Environment,
|
||||
_In_ PUNICODE_STRING Name,
|
||||
_In_ PUNICODE_STRING Value
|
||||
_In_opt_ PUNICODE_STRING Value
|
||||
);
|
||||
|
||||
#if (PHNT_VERSION >= PHNT_VISTA)
|
||||
@@ -3385,6 +3401,13 @@ RtlIsDosDeviceName_U(
|
||||
_In_ PWSTR DosFileName
|
||||
);
|
||||
|
||||
NTSYSAPI
|
||||
RTL_PATH_TYPE
|
||||
NTAPI
|
||||
RtlDetermineDosPathNameType_Ustr(
|
||||
_In_ PCUNICODE_STRING DosFileName
|
||||
);
|
||||
|
||||
NTSYSAPI
|
||||
ULONG
|
||||
NTAPI
|
||||
@@ -4071,6 +4094,13 @@ RtlWalkHeap(
|
||||
#define HeapDetailedFailureInformation 0x80000001
|
||||
#define HeapSetDebuggingInformation 0x80000002 // q; s: HEAP_DEBUGGING_INFORMATION
|
||||
|
||||
typedef enum _HEAP_COMPATIBILITY_MODE
|
||||
{
|
||||
HEAP_COMPATIBILITY_STANDARD = 0UL,
|
||||
HEAP_COMPATIBILITY_LAL = 1UL,
|
||||
HEAP_COMPATIBILITY_LFH = 2UL,
|
||||
} HEAP_COMPATIBILITY_MODE;
|
||||
|
||||
typedef struct _PROCESS_HEAP_INFORMATION
|
||||
{
|
||||
ULONG_PTR ReserveSize;
|
||||
@@ -4096,8 +4126,11 @@ typedef struct _HEAP_EXTENDED_INFORMATION
|
||||
ULONG Level;
|
||||
PVOID CallbackRoutine;
|
||||
PVOID CallbackContext;
|
||||
PROCESS_HEAP_INFORMATION ProcessHeapInformation;
|
||||
HEAP_INFORMATION HeapInformation;
|
||||
union
|
||||
{
|
||||
PROCESS_HEAP_INFORMATION ProcessHeapInformation;
|
||||
HEAP_INFORMATION HeapInformation;
|
||||
};
|
||||
} HEAP_EXTENDED_INFORMATION, *PHEAP_EXTENDED_INFORMATION;
|
||||
|
||||
// rev
|
||||
@@ -7129,7 +7162,9 @@ RtlGetFrame(
|
||||
VOID
|
||||
);
|
||||
|
||||
#define RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT 8
|
||||
#define RTL_WALK_USER_MODE_STACK 0x00000001
|
||||
#define RTL_WALK_VALID_FLAGS 0x00000001
|
||||
#define RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT 0x00000008
|
||||
|
||||
// private
|
||||
NTSYSAPI
|
||||
@@ -7454,6 +7489,7 @@ typedef struct _RTL_IMAGE_MITIGATION_PAYLOAD_RESTRICTION_POLICY
|
||||
RTL_IMAGE_MITIGATION_POLICY EnableRopStackPivot;
|
||||
RTL_IMAGE_MITIGATION_POLICY EnableRopCallerCheck;
|
||||
RTL_IMAGE_MITIGATION_POLICY EnableRopSimExec;
|
||||
WCHAR EafPlusModuleList[512]; // 19H1
|
||||
} RTL_IMAGE_MITIGATION_PAYLOAD_RESTRICTION_POLICY, *PRTL_IMAGE_MITIGATION_PAYLOAD_RESTRICTION_POLICY;
|
||||
|
||||
// rev
|
||||
@@ -7625,6 +7661,15 @@ RtlCheckTokenMembershipEx(
|
||||
_Out_ PBOOLEAN IsMember
|
||||
);
|
||||
|
||||
// rev
|
||||
NTSYSAPI
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
RtlQueryTokenHostIdAsUlong64(
|
||||
_In_ HANDLE TokenHandle,
|
||||
_Out_ PULONG64 HostId // (WIN://PKGHOSTID)
|
||||
);
|
||||
|
||||
// rev
|
||||
NTSYSAPI
|
||||
NTSTATUS
|
||||
|
||||
@@ -50,7 +50,8 @@
|
||||
#define SE_INC_WORKING_SET_PRIVILEGE (33L)
|
||||
#define SE_TIME_ZONE_PRIVILEGE (34L)
|
||||
#define SE_CREATE_SYMBOLIC_LINK_PRIVILEGE (35L)
|
||||
#define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_SYMBOLIC_LINK_PRIVILEGE
|
||||
#define SE_DELEGATE_SESSION_USER_IMPERSONATE_PRIVILEGE (36L)
|
||||
#define SE_MAX_WELL_KNOWN_PRIVILEGE SE_DELEGATE_SESSION_USER_IMPERSONATE_PRIVILEGE
|
||||
|
||||
// Authz
|
||||
|
||||
@@ -75,6 +76,7 @@
|
||||
#define TOKEN_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT 0x0008
|
||||
#define TOKEN_SECURITY_ATTRIBUTE_DISABLED 0x0010
|
||||
#define TOKEN_SECURITY_ATTRIBUTE_MANDATORY 0x0020
|
||||
#define TOKEN_SECURITY_ATTRIBUTE_COMPARE_IGNORE 0x0040
|
||||
|
||||
#define TOKEN_SECURITY_ATTRIBUTE_VALID_FLAGS ( \
|
||||
TOKEN_SECURITY_ATTRIBUTE_NON_INHERITABLE | \
|
||||
@@ -300,7 +302,7 @@ NtAdjustGroupsToken(
|
||||
_In_opt_ PTOKEN_GROUPS NewState,
|
||||
_In_opt_ ULONG BufferLength,
|
||||
_Out_writes_bytes_to_opt_(BufferLength, *ReturnLength) PTOKEN_GROUPS PreviousState,
|
||||
_Out_ PULONG ReturnLength
|
||||
_Out_opt_ PULONG ReturnLength
|
||||
);
|
||||
|
||||
#if (PHNT_VERSION >= PHNT_WIN8)
|
||||
|
||||
@@ -152,7 +152,8 @@ typedef struct _LDR_DATA_TABLE_ENTRY32
|
||||
ULONG CorImage : 1;
|
||||
ULONG DontRelocate : 1;
|
||||
ULONG CorILOnly : 1;
|
||||
ULONG ReservedFlags5 : 3;
|
||||
ULONG ChpeImage : 1;
|
||||
ULONG ReservedFlags5 : 2;
|
||||
ULONG Redirected : 1;
|
||||
ULONG ReservedFlags6 : 2;
|
||||
ULONG CompatDatabaseProcessed : 1;
|
||||
@@ -236,6 +237,11 @@ typedef struct _RTL_USER_PROCESS_PARAMETERS32
|
||||
WOW64_POINTER(PVOID) PackageDependencyData;
|
||||
ULONG ProcessGroupId;
|
||||
ULONG LoaderThreads;
|
||||
|
||||
UNICODE_STRING32 RedirectionDllName; // REDSTONE4
|
||||
UNICODE_STRING32 HeapPartitionName; // 19H1
|
||||
WOW64_POINTER(ULONG_PTR) DefaultThreadpoolCpuSetMasks;
|
||||
ULONG DefaultThreadpoolCpuSetMaskCount;
|
||||
} RTL_USER_PROCESS_PARAMETERS32, *PRTL_USER_PROCESS_PARAMETERS32;
|
||||
|
||||
typedef struct _PEB32
|
||||
@@ -286,7 +292,7 @@ typedef struct _PEB32
|
||||
WOW64_POINTER(PVOID) KernelCallbackTable;
|
||||
WOW64_POINTER(PVOID) UserSharedInfoPtr;
|
||||
};
|
||||
ULONG SystemReserved[1];
|
||||
ULONG SystemReserved;
|
||||
ULONG AtlThunkSListPtr32;
|
||||
WOW64_POINTER(PVOID) ApiSetMap;
|
||||
ULONG TlsExpansionCounter;
|
||||
@@ -349,11 +355,13 @@ typedef struct _PEB32
|
||||
|
||||
WOW64_POINTER(SIZE_T) MinimumStackCommit;
|
||||
|
||||
WOW64_POINTER(PVOID *) FlsCallback;
|
||||
LIST_ENTRY32 FlsListHead;
|
||||
WOW64_POINTER(PVOID) FlsBitmap;
|
||||
ULONG FlsBitmapBits[FLS_MAXIMUM_AVAILABLE / (sizeof(ULONG) * 8)];
|
||||
ULONG FlsHighIndex;
|
||||
WOW64_POINTER(PVOID) SparePointers[4];
|
||||
ULONG SpareUlongs[5];
|
||||
//WOW64_POINTER(PVOID *) FlsCallback;
|
||||
//LIST_ENTRY32 FlsListHead;
|
||||
//WOW64_POINTER(PVOID) FlsBitmap;
|
||||
//ULONG FlsBitmapBits[FLS_MAXIMUM_AVAILABLE / (sizeof(ULONG) * 8)];
|
||||
//ULONG FlsHighIndex;
|
||||
|
||||
WOW64_POINTER(PVOID) WerRegistrationData;
|
||||
WOW64_POINTER(PVOID) WerShipAssertPtr;
|
||||
|
||||
Reference in New Issue
Block a user