共用方式為


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)