Condividi tramite


struttura KUSER_SHARED_DATA (ntddk.h)

In questo argomento viene descritta la struttura KUSER_SHARED_DATA .

Sintassi

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;

Members

TickCountLowDeprecated

Corrente bassa a 32 bit di conteggio dei tick.

TickCountMultiplier

Moltiplicatore conteggio tick.

InterruptTime

Tempo di interruzione a 64 bit corrente in 100 unità.

SystemTime

Ora di sistema a 64 bit corrente in 100 unità.

TimeZoneBias

Distorsione del fuso orario a 64 bit corrente.

ImageNumberLow

Numero magico immagine bassa per il sistema host.

ImageNumberHigh

Numero magico immagine elevato per il sistema host.

NtSystemRoot[260]

Copia della radice di sistema in unicode. Questo campo deve essere accessibile tramite l'API RtlGetNtSystemRoot per ottenere un risultato accurato.

MaxStackTraceDepth

Profondità massima di analisi dello stack se la traccia è abilitata.

CryptoExponent

Valore dell'esponente di crittografia.

TimeZoneId

ID fuso orario.

LargePageMinimum

Definisce il membro ULONGLargePageMinimum.

AitSamplingValue

Questo valore controlla la frequenza di campionamento AIT.

AppCompatFlag

Questo valore controlla l'elaborazione del commutatore.

RNGSeedVersion

Versione di inizializzazione dello stato RNG radice del kernel corrente.

GlobalValidationRunlevel

Questo valore controlla la gestione degli errori di asserzione.

TimeZoneBiasStamp

Definisce il membro LONGTimeZoneBiasStamp.

NtBuildNumber

Il numero di build collettivo condiviso non dichiarato con C o F. GetVersionEx nasconde il numero reale.

NtProductType

Tipo di prodotto. È necessario accedere a questo campo tramite l'API RtlGetNtProductType per ottenere un risultato accurato.

ProductTypeIsValid

Definisce il membro BOOLEANProductTypeIsValid.

Reserved0[1]

Riservato per utilizzi futuri.

NativeProcessorArchitecture

Definisce il membro USHORTNativeProcessorArchitecture.

NtMajorVersion

Versione principale nt. Ogni processo vede una versione dal peb, ma se il processo è in esecuzione con una visualizzazione modificata della versione di sistema, questo campo viene usato per identificare correttamente la versione.

NtMinorVersion

Versione secondaria NT. Ogni processo vede una versione dal peb, ma se il processo è in esecuzione con una visualizzazione modificata della versione di sistema, questo campo viene usato per identificare correttamente la versione.

ProcessorFeatures[PROCESSOR_FEATURE_MAX]

Funzionalità del processore.

Reserved1

Riservato per usi futuri.

Reserved3

Riservato per usi futuri.

TimeSlip

Scorrimento temporale durante il debugger.

AlternativeArchitecture

Architettura alternativa del sistema. Ad esempio, NEC PC98xx su x86.

BootId

Sequenza di avvio, incrementata per ogni tentativo di avvio da parte del caricatore del sistema operativo.

SystemExpirationDate

Se il sistema è un'unità di valutazione, il campo seguente contiene la data e l'ora di scadenza dell'unità di valutazione. Il valore 0 indica che non è prevista alcuna scadenza. Un valore diverso da zero è l'ora assoluta UTC scaduta dal sistema.

SuiteMask

Supporto suite. Questo campo deve essere accessibile tramite l'API RtlGetSuiteMask per ottenere un risultato accurato.

KdDebuggerEnabled

TRUE se un debugger del kernel è connesso/abilitato.

MitigationPolicies

Criteri di mitigazione.

NXSupportPolicy

Definisce il membro UCHARNXSupportPolicy.

SEHValidationPolicy

Definisce il membro UCHARSEHValidationPolicy.

CurDirDevicesSkippedForDlls

Definisce il membro UCHARCurDirDevicesSkippedForDlls.

Reserved

Riservato per utilizzi futuri.

CyclesPerYield

Durata misurata di un singolo rendimento del processore, in cicli. Viene usato dai pacchetti di blocco per determinare il numero di volte in cui ruotare in attesa di una modifica dello stato prima del blocco.

ActiveConsoleId

ID sessione della console corrente. Sempre zero nei sistemi non TS. È necessario accedere a questo campo tramite l'API RtlGetActiveConsoleId per ottenere un risultato accurato.

DismountCount

Gli smontaggio forzato causano l'invalidità degli handle. Invece di gestire sempre i probe, viene mantenuto un numero di serie di smontaggio che i client possono usare per verificare se devono eseguire il probe degli handle.

ComPlusPackage

Questo campo indica lo stato del pacchetto COM+ a 64 bit nel sistema. Indica se le immagini COM+ intermedie (IL) devono usare il runtime COM+ a 64 bit o il runtime COM+ a 32 bit.

LastSystemRITEventTickCount

Tempo nel conteggio dei segni di graduazione per l'ultimo input utente a livello di sistema in tutte le sessioni del terminale. Per le prestazioni mp, non viene aggiornato tutto il tempo(ad esempio, una volta al minuto per sessione). Viene usato per il rilevamento inattivo.

NumberOfPhysicalPages

Numero di pagine fisiche nel sistema. Ciò può cambiare dinamicamente perché la memoria fisica può essere aggiunta o rimossa da un sistema in esecuzione.

SafeBootMode

True se il sistema è stato avviato in modalità di avvio sicuro.

VirtualizationFlags

Flag di virtualizzazione.

ArchStartedInEl2

Mantenere questo campo di bit sincronizzato con quello in arc.w.

QcSlIsSupported

Mantenere questo campo di bit sincronizzato con quello in arc.w.

Reserved12[2]

Riservato per utilizzi futuri.

DUMMYUNIONNAME2

Si tratta di un campo di bit compresso che contiene vari flag relativi allo stato del sistema. Devono essere manipolati usando operazioni interlock. È necessario accedere a DbgMultiSessionSku tramite l'API RtlIsMultiSessionSku per ottenere un risultato accurato.

DUMMYUNIONNAME2.SharedDataFlags

Definisce il membro ULONGSharedDataFlags.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2

Definisce la struttura DUMMYSTRUCTNAME2 .

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgErrorPortPresent

Solo per il debugger. Non usare. Usare invece le definizioni di bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgElevationEnabled

Solo per il debugger. Non usare. Usare invece le definizioni di bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgVirtEnabled

Solo per il debugger. Non usare. Usare invece le definizioni di bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgInstallerDetectEnabled

Solo per il debugger. Non usare. Usare invece le definizioni di bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgLkgEnabled

Solo per il debugger. Non usare. Usare invece le definizioni di bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgDynProcessorEnabled

Solo per il debugger. Non usare. Usare invece le definizioni di bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgConsoleBrokerEnabled

Solo per il debugger. Non usare. Usare invece le definizioni di bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgSecureBootEnabled

Solo per il debugger. Non usare. Usare invece le definizioni di bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiSessionSku

Solo per il debugger. Non usare. Usare invece le definizioni di bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiUsersInSessionSku

Solo per il debugger. Non usare. Usare invece le definizioni di bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgStateSeparationEnabled

Solo per il debugger. Non usare. Usare invece le definizioni di bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.SpareBits

Solo per il debugger. Non usare. Usare invece le definizioni di bit.

DataFlagsPad[1]

Definisce il membro ULONGDataFlagsPad.

TestRetInstruction

A seconda del processore, il codice per la chiamata rapida del sistema sarà diverso. Questo campo viene usato solo nei sistemi a 32 bit.

QpcFrequency

Definisce il membro LONGLONGQpcFrequency.

SystemCall

In AMD64 questo valore viene inizializzato in un valore diverso da zero se il sistema opera con una visualizzazione modificata del meccanismo di chiamata al servizio di sistema.

Reserved2

Riservato per usi futuri.

FullNumberOfPhysicalPages

Riservato per usi futuri.

SystemCallPad[1]

Riservato per usi futuri.

DUMMYUNIONNAME3

Numero di tick a 64 bit.

DUMMYUNIONNAME3.TickCount

Definisce l'KSYSTEM_TIME membro TickCount.

DUMMYUNIONNAME3.TickCountQuad

Definisce il membro ULONG64TickCountQuad.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

Definisce DUMMYSTRUCTNAME.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ReservedTickCountOverlay[3]

Definisce il membro ULONGReservedTickCountOverlay.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.TickCountPad[1]

Definisce il membro ULONGTickCountPad.

Cookie

Cookie per i puntatori di codifica a livello di sistema.

CookiePad[1]

Riservato per utilizzi futuri.

ConsoleSessionForegroundProcessId

ID client del processo con lo stato attivo nell'ID sessione della console attiva corrente. Questo campo deve essere accessibile tramite l'API RtlGetConsoleSessionForegroundProcessId per un risultato accurato.

TimeUpdateLock

Segnaposto per il blocco di aggiornamento temporale (interno). Questi dati vengono usati per implementare i servizi temporali precisi. È allineato su un limite di riga di cache a 64 byte e disposto nell'ordine degli accessi tipici.

BaselineSystemTimeQpc

Valore del contatore delle prestazioni usato per stabilire l'ora di sistema corrente.

BaselineInterruptTimeQpc

Valore del contatore delle prestazioni usato per calcolare l'ultima ora di interruzione.

QpcSystemTimeIncrement

Numero di secondi di tempo di sistema ridimensionato rappresentato da un singolo conteggio delle prestazioni (questo valore può variare per ottenere la sincronizzazione del tempo).

QpcInterruptTimeIncrement

Numero di tempo di interruzione ridimensionato rappresentato da un singolo conteggio delle prestazioni (questo valore è costante dopo l'avvio del sistema).

QpcSystemTimeIncrementShift

Numero di turni di ridimensionamento applicati all'incremento del tempo del contatore delle prestazioni.

QpcInterruptTimeIncrementShift

Numero di turni di ridimensionamento applicati all'incremento del tempo di interruzione del contatore delle prestazioni.

UnparkedProcessorCount

Conteggio dei processori non parcheggiati.

EnclaveFeatureMask[4]

Maschera di bit delle funzionalità di enclave supportate in questo sistema. Questo campo deve essere accessibile tramite l'API RtlIsEnclareFeaturePresent per un risultato accurato.

TelemetryCoverageRound

Round di copertura corrente per la copertura basata sui dati di telemetria.

UserModeGlobalLogger[16]

Il campo seguente viene usato per la registrazione globale in modalità utente ETW (UMGL).

ImageFileExecutionOptions

Impostazioni che possono abilitare l'uso delle opzioni di esecuzione file immagine da HKCU oltre all'originale HKLM.

LangGenerationCount

Generazione della struttura del kernel che contiene informazioni sul linguaggio di sistema.

Reserved4

Riservato per utilizzi futuri.

InterruptTimeBias

Tempo di interruzione a 64 bit corrente in 100 unità.

QpcBias

Distorsione del contatore delle prestazioni a 64 bit corrente, nelle unità contatori delle prestazioni prima dell'applicazione del turno.

ActiveProcessorCount

Numero di processori attivi.

ActiveGroupCount

Numero di gruppi attivi.

Reserved9

Riservato per utilizzi futuri.

QpcData

Definisce il membro QpcData di USHORT .

QpcBypassEnabled

Valore booleano che indica se le query del contatore delle prestazioni possono leggere direttamente il contatore (ignorando la chiamata di sistema).

QpcReserved

Riservato per utilizzi futuri.

TimeZoneBiasEffectiveStart

Definisce il membro LARGE_INTEGERTimeZoneBiasEffectiveStart.

TimeZoneBiasEffectiveEnd

Definisce il membro LARGE_INTEGERTimeZoneBiasEffectiveEnd.

XState

Configurazione dello stato del processore estesa.

FeatureConfigurationChangeStamp

Definisce il membro KSYSTEM_TIME FeatureConfigurationChangeStamp.

Spare

Definisce il membro ULONGSpare.

UserPointerAuthMask

Definisce il membro ULONG64 UserPointerAuthMask.

XStateArm64

Reserved10[210]

Requisiti

Requisito Valore
Intestazione ntddk.h (include Ntddk.h)