共用方式為


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

時區標識碼。

LargePageMinimum

定義 ULONG 成員 LargePageMinimum

AitSamplingValue

此值會控制 AIT 取樣率。

AppCompatFlag

這個值會控制切換回送處理。

RNGSeedVersion

目前的核心根 RNG 狀態種子版本。

GlobalValidationRunlevel

這個值會控制判斷提示失敗處理。

TimeZoneBiasStamp

定義 timeZoneBiasStamp TimeZoneBiasStampLONG 成員。

NtBuildNumber

使用 C 或 F 取消編碼的共用集體組建編號 GetVersionEx 隱藏實數。

NtProductType

產品類型。 您必須透過 RtlGetNtProductType API 來存取此欄位,才能取得精確的結果。

ProductTypeIsValid

ProductTypeIsValid定義 BOOLEAN 成員。

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

定義 NXSupportPolicy UCHAR 成員。

SEHValidationPolicy

定義 SEHValidationPolicy UCHAR 成員。

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

這是一個包裝的位欄位,其中包含有關系統狀態的各種旗標。 必須使用相互鎖定的作業來作它們。 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

定義 TickCount 成員 KSYSTEM_TIME 成員。

DUMMYUNIONNAME3.TickCountQuad

定義 tickCountQuad 成員 ULONG64 成員。

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

定義 DUMMYSTRUCTNAME

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ReservedTickCountOverlay[3]

定義 ULONG 成員 ReservedTickCountOverlay

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.TickCountPad[1]

定義 TickCountPad TickCountPadULONG 成員。

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

100ns 單位中的目前64位中斷時間偏差。

QpcBias

目前64位性能計數器偏差,在套用班次前的性能計數器單位中。

ActiveProcessorCount

使用中處理器的數目。

ActiveGroupCount

使用中群組的數目。

Reserved9

保留供日後使用。

QpcData

定義 USHORT 成員 QpcData。

QpcBypassEnabled

布爾值,指出性能計數器查詢是否可以直接讀取計數器(略過系統呼叫)。

QpcReserved

保留供日後使用。

TimeZoneBiasEffectiveStart

定義 timeZoneBiasEffectiveStart 成員 LARGE_INTEGER 成員。

TimeZoneBiasEffectiveEnd

定義 timeZoneBiasEffectiveEnd LARGE_INTEGER 成員。

XState

擴充處理器狀態設定。

FeatureConfigurationChangeStamp

定義featureConfigurationChangeStamp 成員 KSYSTEM_TIME 成員。

Spare

定義 ULONG 成員 備用

UserPointerAuthMask

定義userPointerAuthMask ULONG64 成員。

XStateArm64

Reserved10[210]

要求

要求 價值
標頭 ntddk.h (包括 Ntddk.h)