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) |