次の方法で共有


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 を含む)