KUSER_SHARED_DATA 结构 (ntddk.h)
本主题介绍 KUSER_SHARED_DATA 结构。
语法
typedef struct _KUSER_SHARED_DATA {
ULONG TickCountLowDeprecated;
ULONG TickCountMultiplier;
KSYSTEM_TIME InterruptTime;
KSYSTEM_TIME SystemTime;
KSYSTEM_TIME TimeZoneBias;
USHORT ImageNumberLow;
USHORT ImageNumberHigh;
WCHAR NtSystemRoot[260];
ULONG MaxStackTraceDepth;
ULONG CryptoExponent;
ULONG TimeZoneId;
ULONG LargePageMinimum;
ULONG AitSamplingValue;
ULONG AppCompatFlag;
ULONGLONG RNGSeedVersion;
ULONG GlobalValidationRunlevel;
LONG TimeZoneBiasStamp;
ULONG NtBuildNumber;
NT_PRODUCT_TYPE NtProductType;
BOOLEAN ProductTypeIsValid;
BOOLEAN Reserved0[1];
USHORT NativeProcessorArchitecture;
ULONG NtMajorVersion;
ULONG NtMinorVersion;
BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];
ULONG Reserved1;
ULONG Reserved3;
ULONG TimeSlip;
ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;
ULONG BootId;
LARGE_INTEGER SystemExpirationDate;
ULONG SuiteMask;
BOOLEAN KdDebuggerEnabled;
union {
UCHAR MitigationPolicies;
struct {
UCHAR NXSupportPolicy : 2;
UCHAR SEHValidationPolicy : 2;
UCHAR CurDirDevicesSkippedForDlls : 2;
UCHAR Reserved : 2;
};
};
USHORT CyclesPerYield;
ULONG ActiveConsoleId;
ULONG DismountCount;
ULONG ComPlusPackage;
ULONG LastSystemRITEventTickCount;
ULONG NumberOfPhysicalPages;
BOOLEAN SafeBootMode;
union {
UCHAR VirtualizationFlags;
struct {
UCHAR ArchStartedInEl2 : 1;
UCHAR QcSlIsSupported : 1;
};
};
UCHAR Reserved12[2];
union {
ULONG SharedDataFlags;
struct {
ULONG DbgErrorPortPresent : 1;
ULONG DbgElevationEnabled : 1;
ULONG DbgVirtEnabled : 1;
ULONG DbgInstallerDetectEnabled : 1;
ULONG DbgLkgEnabled : 1;
ULONG DbgDynProcessorEnabled : 1;
ULONG DbgConsoleBrokerEnabled : 1;
ULONG DbgSecureBootEnabled : 1;
ULONG DbgMultiSessionSku : 1;
ULONG DbgMultiUsersInSessionSku : 1;
ULONG DbgStateSeparationEnabled : 1;
ULONG SpareBits : 21;
} DUMMYSTRUCTNAME2;
} DUMMYUNIONNAME2;
ULONG DataFlagsPad[1];
ULONGLONG TestRetInstruction;
LONGLONG QpcFrequency;
ULONG SystemCall;
ULONG Reserved2;
ULONGLONG FullNumberOfPhysicalPages;
ULONGLONG SystemCallPad[1];
union {
KSYSTEM_TIME TickCount;
ULONG64 TickCountQuad;
struct {
ULONG ReservedTickCountOverlay[3];
ULONG TickCountPad[1];
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME3;
ULONG Cookie;
ULONG CookiePad[1];
LONGLONG ConsoleSessionForegroundProcessId;
ULONGLONG TimeUpdateLock;
ULONGLONG BaselineSystemTimeQpc;
ULONGLONG BaselineInterruptTimeQpc;
ULONGLONG QpcSystemTimeIncrement;
ULONGLONG QpcInterruptTimeIncrement;
UCHAR QpcSystemTimeIncrementShift;
UCHAR QpcInterruptTimeIncrementShift;
USHORT UnparkedProcessorCount;
ULONG EnclaveFeatureMask[4];
ULONG TelemetryCoverageRound;
USHORT UserModeGlobalLogger[16];
ULONG ImageFileExecutionOptions;
ULONG LangGenerationCount;
ULONGLONG Reserved4;
ULONGLONG InterruptTimeBias;
ULONGLONG QpcBias;
ULONG ActiveProcessorCount;
UCHAR ActiveGroupCount;
UCHAR Reserved9;
union {
USHORT QpcData;
struct {
UCHAR QpcBypassEnabled;
UCHAR QpcReserved;
};
};
LARGE_INTEGER TimeZoneBiasEffectiveStart;
LARGE_INTEGER TimeZoneBiasEffectiveEnd;
XSTATE_CONFIGURATION XState;
KSYSTEM_TIME FeatureConfigurationChangeStamp;
ULONG Spare;
ULONG64 UserPointerAuthMask;
XSTATE_CONFIGURATION XStateArm64;
ULONG Reserved10[210];
} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
成员
TickCountLowDeprecated
当前低 32 位计时周期计数。
TickCountMultiplier
刻度计数乘数。
InterruptTime
当前 64 位中断时间(以 100ns 为单位)。
SystemTime
当前 64 位系统时间(以 100ns 为单位)。
TimeZoneBias
当前 64 位时区偏差。
ImageNumberLow
主机系统的低图像幻数。
ImageNumberHigh
主机系统的高图像幻数。
NtSystemRoot[260]
unicode 中系统根目录的副本。 必须通过 RtlGetNtSystemRoot API 访问此字段,才能获得准确的结果。
MaxStackTraceDepth
启用跟踪时的最大堆栈跟踪深度。
CryptoExponent
加密指数值。
TimeZoneId
时区 ID。
LargePageMinimum
定义 ULONG 成员 LargePageMinimum。
AitSamplingValue
此值控制 AIT 采样率。
AppCompatFlag
此值控制切换回处理。
RNGSeedVersion
当前内核根 RNG 状态种子版本。
GlobalValidationRunlevel
此值控制断言失败处理。
TimeZoneBiasStamp
定义 LONG 成员 TimeZoneBiasStamp。
NtBuildNumber
未使用 C 或 F 修饰的共享集合生成号。 GetVersionEx 隐藏实数。
NtProductType
产品类型。 必须通过 RtlGetNtProductType API 访问此字段,才能获得准确的结果。
ProductTypeIsValid
定义 BOOLEAN 成员 ProductTypeIsValid。
Reserved0[1]
保留供将来使用。
NativeProcessorArchitecture
定义 USHORT 成员 NativeProcessorArchitecture。
NtMajorVersion
NT 主版本。 每个进程都会从其 PEB 中看到一个版本,但如果进程正在运行的系统版本视图已更改,则此字段用于正确标识版本。
NtMinorVersion
NT 次要版本。 每个进程都会从其 PEB 中看到一个版本,但如果进程正在运行的系统版本视图已更改,则此字段用于正确标识版本。
ProcessorFeatures[PROCESSOR_FEATURE_MAX]
处理器功能。
Reserved1
留待将来使用。
Reserved3
留待将来使用。
TimeSlip
调试器中的时间滑点。
AlternativeArchitecture
替代系统体系结构。 例如,x86 上的 NEC PC98xx。
BootId
启动序列,针对 OS 加载程序每次启动尝试递增。
SystemExpirationDate
如果系统是评估单元,则以下字段包含评估单元过期的日期和时间。 值为 0 表示没有过期时间。 非零值是系统过期的 UTC 绝对时间。
SuiteMask
套件支持。 必须通过 RtlGetSuiteMask API 访问此字段,才能获得准确的结果。
KdDebuggerEnabled
如果已连接/启用内核调试器,则为 TRUE。
MitigationPolicies
缓解策略。
NXSupportPolicy
定义 UCHAR 成员 NXSupportPolicy。
SEHValidationPolicy
定义 UCHAR 成员 SEHValidationPolicy。
CurDirDevicesSkippedForDlls
定义 UCHAR 成员 CurDirDevicesSkippedForDlls。
Reserved
保留供将来使用。
CyclesPerYield
单个处理器产量的测量持续时间(以周期为单位)。 锁包使用它来确定在阻止之前等待状态更改的旋转次数。
ActiveConsoleId
当前控制台会话 ID。在非 TS 系统上始终为零。 必须通过 RtlGetActiveConsoleId API 访问此字段,才能获得准确的结果。
DismountCount
强制卸除会导致句柄无效。 客户端可以使用这些序列号来查看是否需要探测句柄,而不是始终探测句柄。
ComPlusPackage
此字段指示系统上 64 位 COM+ 包的状态。 它指示中间语言 (IL) COM+ 映像是否需要使用 64 位 COM+ 运行时或 32 位 COM+ 运行时。
LastSystemRITEventTickCount
所有终端会话中系统范围的上次用户输入的计时周期计数。 对于 MP 性能,它不会一直更新 (例如,每个会话) 一分钟一次。 它用于空闲检测。
NumberOfPhysicalPages
系统中的物理页数。 这可以动态更改,因为可以在正在运行的系统中添加或删除物理内存。
SafeBootMode
如此 如果系统是在安全启动模式下启动的。
VirtualizationFlags
虚拟化标志。
ArchStartedInEl2
使此位域与 arc.w 中的位域保持同步。
QcSlIsSupported
使此位域与 arc.w 中的位域保持同步。
Reserved12[2]
保留供将来使用。
DUMMYUNIONNAME2
这是一个打包位域,其中包含有关系统状态的各种标志。 必须使用互锁操作来操作它们。 必须通过 RtlIsMultiSessionSku API 访问 DbgMultiSessionSku,才能获得准确的结果。
DUMMYUNIONNAME2.SharedDataFlags
定义 ULONG 成员 SharedDataFlags。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2
定义 DUMMYSTRUCTNAME2 结构。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgErrorPortPresent
仅适用于调试器。 请勿使用。 请改用位定义。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgElevationEnabled
仅适用于调试器。 请勿使用。 请改用位定义。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgVirtEnabled
仅适用于调试器。 请勿使用。 请改用位定义。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgInstallerDetectEnabled
仅适用于调试器。 请勿使用。 请改用位定义。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgLkgEnabled
仅适用于调试器。 请勿使用。 请改用位定义。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgDynProcessorEnabled
仅适用于调试器。 请勿使用。 请改用位定义。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgConsoleBrokerEnabled
仅适用于调试器。 请勿使用。 请改用位定义。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgSecureBootEnabled
仅适用于调试器。 请勿使用。 请改用位定义。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiSessionSku
仅适用于调试器。 请勿使用。 请改用位定义。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiUsersInSessionSku
仅适用于调试器。 请勿使用。 请改用位定义。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgStateSeparationEnabled
仅适用于调试器。 请勿使用。 请改用位定义。
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.SpareBits
仅适用于调试器。 请勿使用。 请改用位定义。
DataFlagsPad[1]
定义 ULONG 成员 DataFlagsPad。
TestRetInstruction
根据处理器的不同,快速系统调用的代码会有所不同。 此字段仅在 32 位系统上使用。
QpcFrequency
定义 LONGLONG 成员 QpcFrequency。
SystemCall
在 AMD64 上,如果系统使用系统服务调用机制的已更改视图运行,则此值将初始化为非零值。
Reserved2
留待将来使用。
FullNumberOfPhysicalPages
留待将来使用。
SystemCallPad[1]
留待将来使用。
DUMMYUNIONNAME3
64 位计时周期计数。
DUMMYUNIONNAME3.TickCount
定义 KSYSTEM_TIME 成员 TickCount。
DUMMYUNIONNAME3.TickCountQuad
定义 ULONG64 成员 TickCountQuad。
DUMMYUNIONNAME3.DUMMYSTRUCTNAME
定义 DUMMYSTRUCTNAME。
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ReservedTickCountOverlay[3]
定义 ULONG 成员 ReservedTickCountOverlay。
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.TickCountPad[1]
定义 ULONG 成员 TickCountPad。
Cookie
用于在系统范围内编码指针的 Cookie。
CookiePad[1]
保留供将来使用。
ConsoleSessionForegroundProcessId
焦点位于当前活动控制台会话 ID 中的进程的客户端 ID。必须通过 RtlGetConsoleSessionForegroundProcessId API 访问此字段,才能获得准确的结果。
TimeUpdateLock
(内部) 时间更新锁的占位符。 此数据用于实现精确的时间服务。 它在 64 字节缓存行边界上对齐,并按典型访问的顺序排列。
BaselineSystemTimeQpc
用于建立当前系统时间的性能计数器值。
BaselineInterruptTimeQpc
用于计算上次中断时间的性能计数器值。
QpcSystemTimeIncrement
此值 (单个性能计数表示的缩放系统时间秒数可能会有所不同,以实现时间同步) 。
QpcInterruptTimeIncrement
在系统启动) 后,此值 (单个性能计数表示的缩放中断时间秒数是恒定的。
QpcSystemTimeIncrementShift
应用于性能计数器系统时间增量的缩放移位计数。
QpcInterruptTimeIncrementShift
应用于性能计数器中断时间增量的缩放移位计数。
UnparkedProcessorCount
未停止的处理器的计数。
EnclaveFeatureMask[4]
此系统支持的 enclave 功能的位掩码。 必须通过 RtlIsEnclareFeaturePresent API 访问此字段,才能获得准确的结果。
TelemetryCoverageRound
基于遥测的覆盖范围的当前覆盖轮次。
UserModeGlobalLogger[16]
以下字段用于 ETW 用户模式全局日志记录 (UMGL) 。
ImageFileExecutionOptions
除了原始 HKLM 之外,还可以启用使用 HKCU 中的图像文件执行选项的设置。
LangGenerationCount
生成包含系统语言信息的内核结构。
Reserved4
保留供将来使用。
InterruptTimeBias
当前 64 位中断时间偏差(以 100ns 为单位)。
QpcBias
当前 64 位性能计数器偏差,在应用移位前以性能计数器单位为单位。
ActiveProcessorCount
活动处理器数。
ActiveGroupCount
活动组数。
Reserved9
保留供将来使用。
QpcData
定义 USHORT 成员 QpcData。
QpcBypassEnabled
一个布尔值,指示性能计数器查询是否可以 (绕过系统调用) 直接读取计数器。
QpcReserved
保留供将来使用。
TimeZoneBiasEffectiveStart
定义 LARGE_INTEGER 成员 TimeZoneBiasEffectiveStart。
TimeZoneBiasEffectiveEnd
定义 LARGE_INTEGER 成员 TimeZoneBiasEffectiveEnd。
XState
扩展的处理器状态配置。
FeatureConfigurationChangeStamp
定义 KSYSTEM_TIME 成员 FeatureConfigurationChangeStamp。
Spare
定义 ULONG 成员 备用。
UserPointerAuthMask
定义 ULONG64 成员 UserPointerAuthMask。
XStateArm64
Reserved10[210]
要求
要求 | 值 |
---|---|
Header | ntddk.h (包括 Ntddk.h) |