Partager via


KUSER_SHARED_DATA structure (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 graduations faible actuel de 32 bits.

TickCountMultiplier

Multiplicateur du nombre de graduations.

InterruptTime

Temps d’interruption 64 bits actuel en unités de 100ns.

SystemTime

Heure système 64 bits actuelle en unités 100ns.

TimeZoneBias

Biais de fuseau horaire 64 bits actuel.

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 de trace de pile maximale si le traçage 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 du 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 collective partagé non décoré 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 un usage futur.

NativeProcessorArchitecture

Définit le membre USHORT NativeProcessorArchitecture.

NtMajorVersion

Version principale de 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é à un usage ultérieur.

Reserved3

Réservé à un usage ultérieur.

TimeSlip

Décalage du 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 d’expiration de l’unité d’évaluation. La valeur 0 indique qu’il n’y a pas d’expiration. Une valeur autre que zéro correspond à l’heure UTC d’expiration absolue du système.

SuiteMask

Prise en charge de la 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 UCHAR NXSupportPolicy.

SEHValidationPolicy

Définit le membre UCHARSEHValidationPolicy.

CurDirDevicesSkippedForDlls

Définit le membre UCHARCurDirDevicesSkippedForDlls.

Reserved

Réservé pour un usage futur.

CyclesPerYield

Durée mesurée du rendement d’un seul processeur, en cycles. Cela est utilisé par les packages de verrouillage pour déterminer le nombre de fois où il faut faire tourner en attente d’un changement d’état avant le blocage.

ActiveConsoleId

ID de session de la console actuelle. 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. Plutôt que de toujours des handles de sonde, un nombre de démontages est conservé que les clients peuvent utiliser pour voir s’ils ont besoin de descripteurs de sonde.

ComPlusPackage

Ce champ indique la status du package COM+ 64 bits sur le système. Il indique si les images COM+ du langage intermédiaire (IL) doivent utiliser le runtime COM+ 64 bits ou le runtime COM+ 32 bits.

LastSystemRITEventTickCount

Durée du nombre de graduations 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 des inactifs.

NumberOfPhysicalPages

Nombre de pages physiques dans le système. Cela peut changer dynamiquement, car 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 d’arc.w.

QcSlIsSupported

Gardez ce champ de bits synchronisé avec celui d’arc.w.

Reserved12[2]

Réservé pour un usage futur.

DUMMYUNIONNAME2

Il s’agit d’un champ de bits rempli qui contient différents indicateurs concernant l’état du système. Ils doivent être manipulés à l’aide d’opérations verrouillées. DbgMultiSessionSku doit être accessible via l’API RtlIsMultiSessionSku pour obtenir un résultat précis.

DUMMYUNIONNAME2.SharedDataFlags

Définit le membre ULONG SharedDataFlags.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2

Définit la structure DUMMYSTRUCTNAME2 .

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgErrorPortPresent

Pour le débogueur uniquement. Ne pas utiliser. Utilisez plutôt les définitions de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgElevationEnabled

Pour le débogueur uniquement. Ne pas utiliser. Utilisez plutôt les définitions de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgVirtEnabled

Pour le débogueur uniquement. Ne pas utiliser. Utilisez plutôt les définitions de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgInstallerDetectEnabled

Pour le débogueur uniquement. Ne pas utiliser. Utilisez plutôt les définitions de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgLkgEnabled

Pour le débogueur uniquement. Ne pas utiliser. Utilisez plutôt les définitions de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgDynProcessorEnabled

Pour le débogueur uniquement. Ne pas utiliser. Utilisez plutôt les définitions de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgConsoleBrokerEnabled

Pour le débogueur uniquement. Ne pas utiliser. Utilisez plutôt les définitions de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgSecureBootEnabled

Pour le débogueur uniquement. Ne pas utiliser. Utilisez plutôt les définitions de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiSessionSku

Pour le débogueur uniquement. Ne pas utiliser. Utilisez plutôt les définitions de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiUsersInSessionSku

Pour le débogueur uniquement. Ne pas utiliser. Utilisez plutôt les définitions de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgStateSeparationEnabled

Pour le débogueur uniquement. Ne pas utiliser. Utilisez plutôt les définitions de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.SpareBits

Pour le débogueur uniquement. Ne pas utiliser. 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 LONGLONG QpcFrequency.

SystemCall

Sur AMD64, cette valeur est initialisée à une valeur différente de zéro si le système fonctionne avec une vue modifiée du mécanisme d’appel du service système.

Reserved2

Réservé à un usage ultérieur.

FullNumberOfPhysicalPages

Réservé à un usage ultérieur.

SystemCallPad[1]

Réservé à un usage ultérieur.

DUMMYUNIONNAME3

Nombre de graduations 64 bits.

DUMMYUNIONNAME3.TickCount

Définit le KSYSTEM_TIME membre TickCount.

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 un usage futur.

ConsoleSessionForegroundProcessId

ID client du processus ayant le focus dans l’ID de session de la console active actuelle. 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 l’heure (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 l’heure de la dernière interruption.

QpcSystemTimeIncrement

Nombre de secondes de temps système mises à l’échelle représentées par un seul nombre de performances (cette valeur peut varier pour atteindre la synchronisation de l’heure).

QpcInterruptTimeIncrement

Nombre mis à l’échelle de temps d’interruption en secondes représenté 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

Cycle de couverture actuel 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 du HKLM d’origine.

LangGenerationCount

Génération de la structure du noyau contenant les informations de langue système.

Reserved4

Réservé pour un usage futur.

InterruptTimeBias

Biais de temps d’interruption 64 bits actuel dans les unités de 100n.

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 un usage futur.

QpcData

Définit le membre USHORT QpcData.

QpcBypassEnabled

Boolean indiquant si les requêtes de compteur de performances peuvent lire le compteur directement (en contournant l’appel système).

QpcReserved

Réservé pour un usage futur.

TimeZoneBiasEffectiveStart

Définit le membre LARGE_INTEGERTimeZoneBiasEffectiveStart.

TimeZoneBiasEffectiveEnd

Définit le LARGE_INTEGER membre TimeZoneBiasEffectiveEnd.

XState

Configuration étendue de l’état du processeur.

FeatureConfigurationChangeStamp

Définit le KSYSTEM_TIME membre FeatureConfigurationChangeStamp.

Spare

Définit le membre ULONGSpare.

UserPointerAuthMask

Définit le ULONG64 membre UserPointerAuthMask.

XStateArm64

Reserved10[210]

Configuration requise

Condition requise Valeur
En-tête ntddk.h (incluez Ntddk.h)