Freigeben über


KUSER_SHARED_DATA-Struktur (ntddk.h)

In diesem Thema wird die KUSER_SHARED_DATA-Struktur beschrieben.

Syntax

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;

Member

TickCountLowDeprecated

Aktuelle niedrige 32-Bit-Tick-Anzahl.

TickCountMultiplier

Multiplikator für die Tickanzahl.

InterruptTime

Aktuelle 64-Bit-Interruptzeit in 100ns-Einheiten.

SystemTime

Aktuelle 64-Bit-Systemzeit in 100ns-Einheiten.

TimeZoneBias

Aktuelle 64-Bit-Zeitzonenverzerrung.

ImageNumberLow

Niedrige Magische Bildzahl für das Hostsystem.

ImageNumberHigh

Hohe Magische Bildzahl für das Hostsystem.

NtSystemRoot[260]

Kopie des Systemstamms in Unicode. Auf dieses Feld muss über die RtlGetNtSystemRoot-API zugegriffen werden, um ein genaues Ergebnis zu erzielen.

MaxStackTraceDepth

Maximale Stapelablaufverfolgungstiefe, wenn die Ablaufverfolgung aktiviert ist.

CryptoExponent

Krypto-Exponentwert.

TimeZoneId

Zeitzonen-ID.

LargePageMinimum

Definiert das ULONG-ElementLargePageMinimum.

AitSamplingValue

Dieser Wert steuert die AIT-Samplingrate.

AppCompatFlag

Dieser Wert steuert die Switchbackverarbeitung.

RNGSeedVersion

Aktuelle Kernelstamm-RNG-Status-Seedversion.

GlobalValidationRunlevel

Dieser Wert steuert die Behandlung von Assertionsfehlern.

TimeZoneBiasStamp

Definiert den LONG-MemberTimeZoneBiasStamp.

NtBuildNumber

Die freigegebene Sammelbuildnummer wird nicht mit C oder F ausgebucht. GetVersionEx blendet die reelle Zahl aus.

NtProductType

Produkttyp. Auf dieses Feld muss über die RtlGetNtProductType-API zugegriffen werden, um ein genaues Ergebnis zu erzielen.

ProductTypeIsValid

Definiert das BOOLEAN-ElementProductTypeIsValid.

Reserved0[1]

Für die zukünftige Verwendung reserviert.

NativeProcessorArchitecture

Definiert das USHORT-ElementNativeProcessorArchitecture.

NtMajorVersion

Die NT-Hauptversion. Jeder Prozess sieht eine Version aus seinem PEB, aber wenn der Prozess mit einer geänderten Ansicht der Systemversion ausgeführt wird, wird dieses Feld verwendet, um die Version korrekt zu identifizieren.

NtMinorVersion

Die NT-Nebenversion. Jeder Prozess sieht eine Version aus seinem PEB, aber wenn der Prozess mit einer geänderten Ansicht der Systemversion ausgeführt wird, wird dieses Feld verwendet, um die Version korrekt zu identifizieren.

ProcessorFeatures[PROCESSOR_FEATURE_MAX]

Prozessorfeatures.

Reserved1

Für zukünftige Verwendung reserviert.

Reserved3

Für zukünftige Verwendung reserviert.

TimeSlip

Zeitabweichung während des Debuggers.

AlternativeArchitecture

Alternative Systemarchitektur. Beispiel: NEC PC98xx auf x86.

BootId

Startsequenz, die für jeden Startversuch vom Betriebssystemladeprogramm inkrementiert wird.

SystemExpirationDate

Wenn das System eine Auswertungseinheit ist, enthält das folgende Feld das Datum und die Uhrzeit des Ablaufs der Auswertungseinheit. Der Wert 0 gibt an, dass kein Ablauf vorliegt. Ein Wert ungleich 0 (null) ist die absolute UTC-Zeit, zu der das System abläuft.

SuiteMask

Suite-Unterstützung. Der Zugriff auf dieses Feld muss über die RtlGetSuiteMask-API erfolgen, um ein genaues Ergebnis zu erzielen.

KdDebuggerEnabled

TRUE, wenn ein Kerneldebugger verbunden/aktiviert ist.

MitigationPolicies

Entschärfungsrichtlinien.

NXSupportPolicy

Definiert das UCHAR-ElementNXSupportPolicy.

SEHValidationPolicy

Definiert das UCHAR-ElementSEHValidationPolicy.

CurDirDevicesSkippedForDlls

Definiert das UCHAR-ElementCurDirDevicesSkippedForDlls.

Reserved

Für die zukünftige Verwendung reserviert.

CyclesPerYield

Gemessene Dauer eines einzelnen Prozessorertrags in Zyklen. Dies wird von Sperrpaketen verwendet, um zu bestimmen, wie oft das Drehen auf eine Zustandsänderung vor dem Blockieren erfolgt.

ActiveConsoleId

Aktuelle Konsolensitzungs-ID. Auf Nicht-TS-Systemen immer null. Für ein genaues Ergebnis muss über die RtlGetActiveConsoleId-API auf dieses Feld zugegriffen werden.

DismountCount

Die Erzwingung der Bereitstellung führt dazu, dass Handles ungültig werden. Statt immer Testhandles wird eine fortlaufende Anzahl von Dismounts beibehalten, die Clients verwenden können, um zu ermitteln, ob sie Handles testen müssen.

ComPlusPackage

Dieses Feld gibt die status des 64-Bit-COM+-Pakets auf dem System an. Sie gibt an, ob die COM+-Images (Intermediate Language) die 64-Bit-COM+-Runtime oder die 32-Bit-COM+-Runtime verwenden müssen.

LastSystemRITEventTickCount

Anzahl der Zeit in Teilstrichen für systemweite letzte Benutzereingaben in allen Terminalsitzungen. Für die MP-Leistung wird sie nicht ständig aktualisiert (z. B. einmal pro Minute pro Sitzung). Es wird für die Leerlauferkennung verwendet.

NumberOfPhysicalPages

Anzahl der physischen Seiten im System. Dies kann sich dynamisch ändern, da physischer Arbeitsspeicher einem ausgeführten System hinzugefügt oder daraus entfernt werden kann.

SafeBootMode

True, wenn das System im abgesicherten Startmodus gestartet wurde.

VirtualizationFlags

Virtualisierungsflags.

ArchStartedInEl2

Halten Sie dieses Bitfeld mit dem Bitfeld in arc.w synchron.

QcSlIsSupported

Halten Sie dieses Bitfeld mit dem Bitfeld in arc.w synchron.

Reserved12[2]

Für die zukünftige Verwendung reserviert.

DUMMYUNIONNAME2

Dies ist ein gepacktes Bitfeld, das verschiedene Flags zum Systemzustand enthält. Sie müssen mithilfe von ineinandergreifenden Vorgängen bearbeitet werden. Der Zugriff auf DbgMultiSessionSku muss über die RtlIsMultiSessionSku-API erfolgen, um ein genaues Ergebnis zu erzielen.

DUMMYUNIONNAME2.SharedDataFlags

Definiert das ULONG-ElementSharedDataFlags.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2

Definiert die DUMMYSTRUCTNAME2-Struktur .

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgErrorPortPresent

Nur für Debugger. Nicht verwenden. Verwenden Sie stattdessen die Bitdefinitionen.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgElevationEnabled

Nur für Debugger. Nicht verwenden. Verwenden Sie stattdessen die Bitdefinitionen.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgVirtEnabled

Nur für Debugger. Nicht verwenden. Verwenden Sie stattdessen die Bitdefinitionen.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgInstallerDetectEnabled

Nur für Debugger. Nicht verwenden. Verwenden Sie stattdessen die Bitdefinitionen.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgLkgEnabled

Nur für Debugger. Nicht verwenden. Verwenden Sie stattdessen die Bitdefinitionen.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgDynProcessorEnabled

Nur für Debugger. Nicht verwenden. Verwenden Sie stattdessen die Bitdefinitionen.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgConsoleBrokerEnabled

Nur für Debugger. Nicht verwenden. Verwenden Sie stattdessen die Bitdefinitionen.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgSecureBootEnabled

Nur für Debugger. Nicht verwenden. Verwenden Sie stattdessen die Bitdefinitionen.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiSessionSku

Nur für Debugger. Nicht verwenden. Verwenden Sie stattdessen die Bitdefinitionen.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiUsersInSessionSku

Nur für Debugger. Nicht verwenden. Verwenden Sie stattdessen die Bitdefinitionen.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgStateSeparationEnabled

Nur für Debugger. Nicht verwenden. Verwenden Sie stattdessen die Bitdefinitionen.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.SpareBits

Nur für den Debugger. Nicht verwenden. Verwenden Sie stattdessen die Bitdefinitionen.

DataFlagsPad[1]

Definiert das ULONG-MemberDataFlagsPad.

TestRetInstruction

Je nach Prozessor unterscheidet sich der Code für einen schnellen Systemaufruf. Dieses Feld wird nur auf 32-Bit-Systemen verwendet.

QpcFrequency

Definiert das LONGLONG-ElementQpcFrequency.

SystemCall

Bei AMD64 wird dieser Wert als nichtzero-Wert initialisiert, wenn das System mit einer geänderten Ansicht des Systemdienstaufrufmechanismus arbeitet.

Reserved2

Für zukünftige Verwendung reserviert.

FullNumberOfPhysicalPages

Für zukünftige Verwendung reserviert.

SystemCallPad[1]

Für zukünftige Verwendung reserviert.

DUMMYUNIONNAME3

Die 64-Bit-Tickanzahl.

DUMMYUNIONNAME3.TickCount

Definiert das KSYSTEM_TIME Member TickCount.

DUMMYUNIONNAME3.TickCountQuad

Definiert das ULONG64 Member TickCountQuad.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

Definiert DUMMYSTRUCTNAME.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ReservedTickCountOverlay[3]

Definiert das ULONG-ElementReservedTickCountOverlay.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.TickCountPad[1]

Definiert das ULONG-MemberTickCountPad.

Cookie

Cookie für die systemweite Codierung von Zeigern.

CookiePad[1]

Für die zukünftige Verwendung reserviert.

ConsoleSessionForegroundProcessId

Client-ID des Prozesses, der den Fokus in der aktuellen aktiven Konsolensitzungs-ID hat. Auf dieses Feld muss über die RtlGetConsoleSessionForegroundProcessId-API zugegriffen werden, um ein genaues Ergebnis zu erhalten.

TimeUpdateLock

Platzhalter für die (interne) Zeitupdatesperre. Diese Daten werden verwendet, um die genauen Zeitdienste zu implementieren. Sie wird an einer Cachezeilengrenze von 64 Byte ausgerichtet und in der Reihenfolge der typischen Zugriffe angeordnet.

BaselineSystemTimeQpc

Der Leistungsindikatorwert, der zum Festlegen der aktuellen Systemzeit verwendet wird.

BaselineInterruptTimeQpc

Der Leistungsindikatorwert, der zum Berechnen der letzten Unterbrechungszeit verwendet wird.

QpcSystemTimeIncrement

Die skalierte Anzahl von Systemzeitsekunden, die durch eine einzelne Leistungsanzahl dargestellt wird (dieser Wert kann variieren, um die Zeitsynchronisierung zu erreichen).

QpcInterruptTimeIncrement

Die skalierte Anzahl der Unterbrechungszeitsekunden, die durch eine einzelne Leistungsanzahl dargestellt wird (dieser Wert ist konstant, nachdem das System gestartet wurde).

QpcSystemTimeIncrementShift

Die Anzahl der Skalierungsverschiebungen, die auf die Systemzeitsteigerung des Leistungsindikators angewendet wird.

QpcInterruptTimeIncrementShift

Die Anzahl der Skalierungsverschiebungen, die auf das Unterbrechungszeit-Inkrement des Leistungsindikators angewendet wird.

UnparkedProcessorCount

Die Anzahl der nicht geparkten Prozessoren.

EnclaveFeatureMask[4]

Eine Bitmaske von Enclave-Features, die auf diesem System unterstützt werden. Auf dieses Feld muss über die RTLIsEnclareFeaturePresent-API zugegriffen werden, um ein genaues Ergebnis zu erhalten.

TelemetryCoverageRound

Aktuelle Abdeckungsrunde für telemetriebasierte Abdeckung.

UserModeGlobalLogger[16]

Das folgende Feld wird für die globale ETW-Benutzermodusprotokollierung (UMGL) verwendet.

ImageFileExecutionOptions

Einstellungen, die die Verwendung von Bilddateiausführungsoptionen von HKCU zusätzlich zum ursprünglichen HKLM ermöglichen können.

LangGenerationCount

Generierung der Kernelstruktur, die Informationen zur Systemsprache enthält.

Reserved4

Für die zukünftige Verwendung reserviert.

InterruptTimeBias

Aktuelle 64-Bit-Interruptzeitverzerrung in 100ns-Einheiten.

QpcBias

Aktuelle 64-Bit-Leistungsindikatorverzerrung in Leistungsindikatoreinheiten, bevor die Verschiebung angewendet wird.

ActiveProcessorCount

Anzahl der aktiven Prozessoren.

ActiveGroupCount

Anzahl der aktiven Gruppen.

Reserved9

Für die zukünftige Verwendung reserviert.

QpcData

Definiert das USHORT-Member QpcData.

QpcBypassEnabled

Ein boolescher Wert, der angibt, ob Leistungsindikatorabfragen den Zähler direkt lesen können (unter Umgehung des Systemaufrufs).

QpcReserved

Für die zukünftige Verwendung reserviert.

TimeZoneBiasEffectiveStart

Definiert das LARGE_INTEGER Member TimeZoneBiasEffectiveStart.

TimeZoneBiasEffectiveEnd

Definiert das LARGE_INTEGER Member TimeZoneBiasEffectiveEnd.

XState

Konfiguration des erweiterten Prozessorzustands.

FeatureConfigurationChangeStamp

Definiert das KSYSTEM_TIME Member FeatureConfigurationChangeStamp.

Spare

Definiert das ULONG-ElementSpare.

UserPointerAuthMask

Definiert das ULONG64 Member UserPointerAuthMask.

XStateArm64

Reserved10[210]

Anforderungen

Anforderung Wert
Header ntddk.h (include Ntddk.h)