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
LargePageMinimum ULONG メンバー定義します。
AitSamplingValue
この値は、AIT サンプリング レートを制御します。
AppCompatFlag
この値は、スイッチバック処理を制御します。
RNGSeedVersion
現在のカーネル ルート RNG 状態シード バージョン。
GlobalValidationRunlevel
この値は、アサーションエラー処理を制御します。
TimeZoneBiasStamp
TimeZoneBiasStamp LONG メンバーを定義します。
NtBuildNumber
C または F でアンコーディングされた共有集合ビルド番号 GetVersionEx は実数を非表示にします。
NtProductType
製品の種類。 このフィールドは、正確な結果を得 RtlGetNtProductType API を介してアクセスする必要があります。
ProductTypeIsValid
ProductTypeIsValid の BOOLEAN メンバー定義します。
Reserved0[1]
将来の使用のために予約されています。
NativeProcessorArchitecture
NativeProcessorArchitecture USHORT メンバー定義します。
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
NXSupportPolicy UCHAR メンバーを定義します。
SEHValidationPolicy
SEHValidationPolicy UCHAR メンバー定義します。
CurDirDevicesSkippedForDlls
CurDirDevicesSkippedForDlls UCHAR メンバーを定義します。
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
これは、システム状態に関するさまざまなフラグを含むパックされたビットフィールドです。 これらは、インターロックされた操作を使用して操作する必要があります。 DbgMultiSessionSku は、正確な結果を得るための RtlIsMultiSessionSku API を介してアクセスする必要があります。
DUMMYUNIONNAME2.SharedDataFlags
SharedDataFlags ULONG メンバー定義します。
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]
DataFlagsPad ULONG メンバー を定義します。
TestRetInstruction
プロセッサによって、高速システム呼び出しのコードは異なります。 このフィールドは、32 ビット システムでのみ使用されます。
QpcFrequency
LONGLONG メンバーを QpcFrequency 定義します。
SystemCall
AMD64 では、システムがシステム・サービス呼び出しメカニズムの変更されたビューで動作する場合、この値は 0 以外の値に初期化されます。
Reserved2
将来の使用のために予約されています。
FullNumberOfPhysicalPages
将来の使用のために予約されています。
SystemCallPad[1]
将来の使用のために予約されています。
DUMMYUNIONNAME3
64 ビットティックカウント。
DUMMYUNIONNAME3.TickCount
TickCount KSYSTEM_TIME メンバーを定義します。
DUMMYUNIONNAME3.TickCountQuad
TickCountQuad ULONG64 メンバーを定義します。
DUMMYUNIONNAME3.DUMMYSTRUCTNAME
DUMMYSTRUCTNAME 定義します。
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ReservedTickCountOverlay[3]
ReservedTickCountOverlay ULONG メンバー定義します。
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.TickCountPad[1]
TickCountPad ULONG メンバー を定義します。
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
現在の64ビット割込み時間バイアス(100ns単位)。
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 を含む) |