structure KUSER_SHARED_DATA (ntddk.h)
Cette rubrique décrit la structure KUSER_SHARED_DATA.
Syntaxe
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;
Membres
TickCountLowDeprecated
Nombre de cycles inférieur à 32 bits actuel.
TickCountMultiplier
Multiplicateur du nombre de cycles.
InterruptTime
Temps d’interruption 64 bits actuel en unités de 100ns.
SystemTime
Temps système 64 bits actuel en unités 100ns.
TimeZoneBias
Biais actuel du fuseau horaire 64 bits.
ImageNumberLow
Nombre magique d’image faible pour le système hôte.
ImageNumberHigh
Numéro magique d’image élevé pour le système hôte.
NtSystemRoot[260]
Copie de la racine système en unicode. Ce champ doit être accessible via l’API RtlGetNtSystemRoot pour obtenir un résultat précis.
MaxStackTraceDepth
Profondeur maximale de trace de pile si le suivi est activé.
CryptoExponent
Valeur d’exposant de chiffrement.
TimeZoneId
ID de fuseau horaire.
LargePageMinimum
Définit le membre ULONGLargePageMinimum.
AitSamplingValue
Cette valeur contrôle le taux d’échantillonnage AIT.
AppCompatFlag
Cette valeur contrôle le traitement de basculement.
RNGSeedVersion
Version initiale de l’état RNG racine du noyau actuel.
GlobalValidationRunlevel
Cette valeur contrôle la gestion des échecs d’assertion.
TimeZoneBiasStamp
Définit le membre LONGTimeZoneBiasStamp.
NtBuildNumber
Le numéro de build collectif partagé non décodé avec C ou F. GetVersionEx masque le nombre réel.
NtProductType
Type de produit. Ce champ doit être accessible via l’API RtlGetNtProductType pour obtenir un résultat précis.
ProductTypeIsValid
Définit le membre BOOLEANProductTypeIsValid.
Reserved0[1]
Réservé pour une utilisation ultérieure.
NativeProcessorArchitecture
Définit le membre USHORTNativeProcessorArchitecture.
NtMajorVersion
Version principale NT. Chaque processus voit une version de son PEB, mais si le processus s’exécute avec une vue modifiée de la version du système, ce champ est utilisé pour identifier correctement la version.
NtMinorVersion
Version mineure NT. Chaque processus voit une version de son PEB, mais si le processus s’exécute avec une vue modifiée de la version du système, ce champ est utilisé pour identifier correctement la version.
ProcessorFeatures[PROCESSOR_FEATURE_MAX]
Fonctionnalités du processeur.
Reserved1
Réservé pour une utilisation ultérieure.
Reserved3
Réservé pour une utilisation ultérieure.
TimeSlip
Glissement de temps dans le débogueur.
AlternativeArchitecture
Architecture système alternative. Par exemple, NEC PC98xx sur x86.
BootId
Séquence de démarrage, incrémentée pour chaque tentative de démarrage par le chargeur du système d’exploitation.
SystemExpirationDate
Si le système est une unité d’évaluation, le champ suivant contient la date et l’heure à laquelle l’unité d’évaluation expire. La valeur 0 indique qu’il n’y a pas d’expiration. Une valeur non nulle est l’heure absolue UTC que le système expire.
SuiteMask
Prise en charge de suite. Ce champ doit être accessible via l’API RtlGetSuiteMask pour obtenir un résultat précis.
KdDebuggerEnabled
TRUE si un débogueur de noyau est connecté/activé.
MitigationPolicies
Stratégies d’atténuation.
NXSupportPolicy
Définit le membre UCHARNXSupportPolicy.
SEHValidationPolicy
Définit le membre UCHARSEHValidationPolicy.
CurDirDevicesSkippedForDlls
Définit le membre UCHARCurDirDevicesSkippedForDlls.
Reserved
Réservé pour une utilisation ultérieure.
CyclesPerYield
Durée mesurée d’un seul rendement du processeur, en cycles. Cela est utilisé par les packages de verrou pour déterminer le nombre de fois où effectuer une rotation en attente d’une modification d’état avant de bloquer.
ActiveConsoleId
ID de session de console actuel. Toujours zéro sur les systèmes non-TS. Ce champ doit être accessible via l’API RtlGetActiveConsoleId pour obtenir un résultat précis.
DismountCount
Les démontages forcés entraînent l’invalidation des handles. Au lieu de toujours les handles de sonde, un nombre de démontages est maintenu que les clients peuvent utiliser pour voir s’ils ont besoin de handles de sonde.
ComPlusPackage
Ce champ indique l’état du package COM+ 64 bits sur le système. Elle indique si les images COM+ COM+ (Intermediate Language) doivent utiliser le runtime COM+ 64 bits ou le runtime COM+ 32 bits.
LastSystemRITEventTickCount
Durée du nombre de cycles pour la dernière entrée utilisateur à l’échelle du système sur toutes les sessions de terminal. Pour les performances mp, il n’est pas mis à jour à tout le temps (par exemple, une fois par minute par session). Il est utilisé pour la détection inactive.
NumberOfPhysicalPages
Nombre de pages physiques dans le système. Cela peut changer dynamiquement à mesure que la mémoire physique peut être ajoutée ou supprimée d’un système en cours d’exécution.
SafeBootMode
True si le système a été démarré en mode de démarrage sans échec.
VirtualizationFlags
Indicateurs de virtualisation.
ArchStartedInEl2
Gardez ce champ de bits synchronisé avec celui de arc.w.
QcSlIsSupported
Gardez ce champ de bits synchronisé avec celui de arc.w.
Reserved12[2]
Réservé pour une utilisation ultérieure.
DUMMYUNIONNAME2
Il s’agit d’un champ de bits packé qui contient différents indicateurs concernant l’état du système. Ils doivent être manipulés à l’aide d’opérations interblocées. DbgMultiSessionSku doit être accessible via l’API RtlIsMultiSessionSku pour obtenir un résultat précis.
DUMMYUNIONNAME2.SharedDataFlags
Définit le membre ULONGSharedDataFlags.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2
Définit la structure DUMMYSTRUCTNAME2.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgErrorPortPresent
Pour le débogueur uniquement. N’utilisez pas. Utilisez plutôt les définitions de bits.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgElevationEnabled
Pour le débogueur uniquement. N’utilisez pas. Utilisez plutôt les définitions de bits.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgVirtEnabled
Pour le débogueur uniquement. N’utilisez pas. Utilisez plutôt les définitions de bits.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgInstallerDetectEnabled
Pour le débogueur uniquement. N’utilisez pas. Utilisez plutôt les définitions de bits.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgLkgEnabled
Pour le débogueur uniquement. N’utilisez pas. Utilisez plutôt les définitions de bits.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgDynProcessorEnabled
Pour le débogueur uniquement. N’utilisez pas. Utilisez plutôt les définitions de bits.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgConsoleBrokerEnabled
Pour le débogueur uniquement. N’utilisez pas. Utilisez plutôt les définitions de bits.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgSecureBootEnabled
Pour le débogueur uniquement. N’utilisez pas. Utilisez plutôt les définitions de bits.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiSessionSku
Pour le débogueur uniquement. N’utilisez pas. Utilisez plutôt les définitions de bits.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiUsersInSessionSku
Pour le débogueur uniquement. N’utilisez pas. Utilisez plutôt les définitions de bits.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgStateSeparationEnabled
Pour le débogueur uniquement. N’utilisez pas. Utilisez plutôt les définitions de bits.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.SpareBits
Pour le débogueur uniquement. N’utilisez pas. Utilisez plutôt les définitions de bits.
DataFlagsPad[1]
Définit le membre ULONGDataFlagsPad.
TestRetInstruction
Selon le processeur, le code de l’appel système rapide diffère. Ce champ est utilisé uniquement sur les systèmes 32 bits.
QpcFrequency
Définit le membre LONGLONGQpcFrequency.
SystemCall
Sur AMD64, cette valeur est initialisée en valeur différente de zéro si le système fonctionne avec une vue modifiée du mécanisme d’appel de service système.
Reserved2
Réservé pour une utilisation ultérieure.
FullNumberOfPhysicalPages
Réservé pour une utilisation ultérieure.
SystemCallPad[1]
Réservé pour une utilisation ultérieure.
DUMMYUNIONNAME3
Nombre de cycles 64 bits.
DUMMYUNIONNAME3.TickCount
Définit le membre KSYSTEM_TIMETickCount.
DUMMYUNIONNAME3.TickCountQuad
Définit le membre ULONG64TickCountQuad.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME
Définit DUMMYSTRUCTNAME.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ReservedTickCountOverlay[3]
Définit le membre ULONGReservedTickCountOverlay.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.TickCountPad[1]
Définit le membre ULONGTickCountPad.
Cookie
Cookie pour les pointeurs d’encodage à l’échelle du système.
CookiePad[1]
Réservé pour une utilisation ultérieure.
ConsoleSessionForegroundProcessId
ID client du processus ayant le focus dans l’ID de session de console active actuel. Ce champ doit être accessible via l’API RtlGetConsoleSessionForegroundProcessId pour obtenir un résultat précis.
TimeUpdateLock
Espace réservé pour le verrou de mise à jour de temps (interne). Ces données sont utilisées pour implémenter les services de temps précis. Il est aligné sur une limite de ligne de cache de 64 octets et organisé dans l’ordre des accès classiques.
BaselineSystemTimeQpc
Valeur du compteur de performances utilisée pour établir l’heure système actuelle.
BaselineInterruptTimeQpc
Valeur du compteur de performances utilisée pour calculer la dernière heure d’interruption.
QpcSystemTimeIncrement
Nombre de secondes de temps système mis à l’échelle représenté par un seul nombre de performances (cette valeur peut varier pour atteindre la synchronisation de temps).
QpcInterruptTimeIncrement
Nombre de secondes d’interruption mis à l’échelle représentées par un seul nombre de performances (cette valeur est constante après le démarrage du système).
QpcSystemTimeIncrementShift
Nombre de décalages de mise à l’échelle appliqués à l’incrément de temps système du compteur de performances.
QpcInterruptTimeIncrementShift
Nombre de décalages de mise à l’échelle appliqués à l’incrément de temps d’interruption du compteur de performances.
UnparkedProcessorCount
Nombre de processeurs nonparkés.
EnclaveFeatureMask[4]
Masque de bits des fonctionnalités d’enclave prises en charge sur ce système. Ce champ doit être accessible via l’API RtlIsEnclareFeaturePresent pour obtenir un résultat précis.
TelemetryCoverageRound
Arrondi de couverture actuelle pour la couverture basée sur la télémétrie.
UserModeGlobalLogger[16]
Le champ suivant est utilisé pour la journalisation globale en mode utilisateur ETW (UMGL).
ImageFileExecutionOptions
Paramètres qui peuvent activer l’utilisation des options d’exécution de fichier image à partir de HKCU en plus de la hkLM d’origine.
LangGenerationCount
Génération de la structure du noyau contenant les informations du langage système.
Reserved4
Réservé pour une utilisation ultérieure.
InterruptTimeBias
Biais de temps d’interruption 64 bits actuel en unités de 100ns.
QpcBias
Biais actuel du compteur de performances 64 bits, dans les unités de compteur de performances avant l’application du décalage.
ActiveProcessorCount
Nombre de processeurs actifs.
ActiveGroupCount
Nombre de groupes actifs.
Reserved9
Réservé pour une utilisation ultérieure.
QpcData
Définit le USHORT membre QpcData.
QpcBypassEnabled
Valeur booléenne indiquant si les requêtes de compteur de performances peuvent lire le compteur directement (en contournant l’appel système).
QpcReserved
Réservé pour une utilisation ultérieure.
TimeZoneBiasEffectiveStart
Définit le membre LARGE_INTEGERTimeZoneBiasEffectiveStart.
TimeZoneBiasEffectiveEnd
Définit le membre LARGE_INTEGERTimeZoneBiasEffectiveEnd.
XState
Configuration de l’état du processeur étendu.
FeatureConfigurationChangeStamp
Définit le membre KSYSTEM_TIMEFeatureConfigurationChangeStamp.
Spare
Définit le membre ULONGSpare.
UserPointerAuthMask
Définit le membre ULONG64UserPointerAuthMask.
XStateArm64
Reserved10[210]
Exigences
Exigence | Valeur |
---|---|
d’en-tête | ntddk.h (include Ntddk.h) |