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
目前以 100ns 單位為單位的 64 位中斷時間。
SystemTime
目前的 64 位系統時間以 100ns 單位為單位。
TimeZoneBias
目前的64位時區偏差。
ImageNumberLow
主機系統的低影像魔術編號。
ImageNumberHigh
主機系統的高影像魔術編號。
NtSystemRoot[260]
unicode 中的系統根目錄複本。 此字段必須透過 RtlGetNtSystemRoot API 存取,才能取得精確的結果。
MaxStackTraceDepth
如果啟用追蹤,堆疊追蹤深度上限。
CryptoExponent
Crypto 指數值。
TimeZoneId
時區標識碼。
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
目前的主控台會話標識碼。非TS系統上一律為零。 此字段必須透過 RtlGetActiveConsoleId API 存取,才能取得精確的結果。
DismountCount
強制卸除會導致句柄變成無效。 用戶端可以使用來查看是否需要探查句柄,而不是一律探查句柄,而維護卸除的序號。
ComPlusPackage
此欄位表示系統上 64 位 COM+ 套件的狀態。 它指出中繼語言 (IL) COM+ 映射是否需要使用 64 位 COM+ 執行時間或 32 位 COM+ 執行時間。
LastSystemRITEventTickCount
所有終端機會話中全系統最後一個使用者輸入的刻度計數時間。 針對 MP 效能,不會隨時更新 (,例如,每個會話每分鐘) 一次。 它用於閑置偵測。
NumberOfPhysicalPages
系統中的實體頁面數目。 這可以動態變更,因為可以新增或移除執行中系統的實體記憶體。
SafeBootMode
如果系統是以安全開機模式開機,則為 True。
VirtualizationFlags
虛擬化旗標。
ArchStartedInEl2
將此位欄位與arc.w 中的位欄位保持同步。
QcSlIsSupported
將此位欄位與arc.w 中的位欄位保持同步。
Reserved12[2]
保留供未來使用。
DUMMYUNIONNAME2
這是封裝的 bitfield,其中包含有關系統狀態的各種旗標。 必須使用相互鎖定的作業來操作它們。 DbgMultiSessionSku 必須透過 RtlIsMultiSessionSku API 存取,才能取得精確的結果。
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
目前作用中主控台會話標識碼中具有焦點之進程的用戶端識別碼。此欄位必須透過 RtlGetConsoleSessionForegroundProcessId API 存取,才能取得精確的結果。
TimeUpdateLock
(內部) 時間更新鎖定的佔位元。 此數據用來實作精確的時間服務。 它會對齊 64 位元組快取行界限,並以一般存取的順序排列。
BaselineSystemTimeQpc
用來建立目前系統時間的性能計數器值。
BaselineInterruptTimeQpc
用來計算上次中斷時間的性能計數器值。
QpcSystemTimeIncrement
此值可能會因達到時間同步處理) 而有所不同,以單一效能計數表示的系統時間秒數 (。
QpcInterruptTimeIncrement
以單一效能計數表示的中斷時間秒數, (此值在系統開機後為常數) 。
QpcSystemTimeIncrementShift
套用至性能計數器系統時間增量的縮放班次計數。
QpcInterruptTimeIncrementShift
套用至性能計數器中斷時間增量的縮放班次計數。
UnparkedProcessorCount
未限定處理器的計數。
EnclaveFeatureMask[4]
此系統上支持的記憶體保護區功能位掩碼。 此欄位必須透過 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]
規格需求
需求 | 值 |
---|---|
標頭 | ntddk.h (包含 Ntddk.h) |