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 は、有効期限がないことを示します。 0 以外の値は、システムの有効期限が切れる UTC 絶対時刻です。
SuiteMask
スイートのサポート。 正確な結果を得られるには、RtlGetSuiteMask API を使用してこのフィールドにアクセスする必要があります。
KdDebuggerEnabled
カーネル デバッガーが接続または有効になっている場合は TRUE。
MitigationPolicies
軽減ポリシー。
NXSupportPolicy
UCHAR メンバー NXSupportPolicy を定義します。
SEHValidationPolicy
UCHAR メンバー SEHValidationPolicy を定義します。
CurDirDevicesSkippedForDlls
UCHAR メンバー CurDirDevicesSkippedForDlls を定義します。
Reserved
将来利用するために予約されています。
CyclesPerYield
1 つのプロセッサの利回りの測定期間 (サイクル単位)。 これは、ブロックする前に状態の変化を待機してスピンする回数を決定するために、ロック パッケージによって使用されます。
ActiveConsoleId
現在のコンソール セッション ID。TS 以外のシステムでは常にゼロ。 このフィールドは、正確な結果を得るための RtlGetActiveConsoleId API を介してアクセスする必要があります。
DismountCount
強制的にマウントを解除すると、ハンドルが無効になります。 常にプローブ ハンドルではなく、シリアル番号のマウント解除が維持され、クライアントはハンドルをプローブする必要があるかどうかを確認するために使用できます。
ComPlusPackage
このフィールドは、システム上の 64 ビット COM+ パッケージの状態を示します。 中間言語 (IL) COM+ イメージで 64 ビット COM+ ランタイムと 32 ビット COM+ ランタイムのどちらを使用する必要があるかを示します。
LastSystemRITEventTickCount
すべてのターミナル セッションでのシステム全体の最後のユーザー入力の時間 (ティック数)。 MP パフォーマンスの場合、常に更新されるわけではありません (たとえば、セッションごとに 1 分に 1 回)。 アイドル状態の検出に使用されます。
NumberOfPhysicalPages
システム内の物理ページの数。 これは、物理メモリを実行中のシステムに追加または削除できるため、動的に変更される可能性があります。
SafeBootMode
システムがセーフ ブート モードで起動された場合は True。
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 では、システムがシステム サービス呼び出しメカニズムの変更されたビューで動作する場合、この値は 0 以外の値に初期化されます。
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
1 つのパフォーマンス数で表されるシステム時間のスケールされた秒数 (この値は、時刻同期を実現するために異なる場合があります)。
QpcInterruptTimeIncrement
1 つのパフォーマンス数で表される割り込み時間のスケールされた秒数 (この値は、システムの起動後に一定です)。
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
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 を含む) |