estructura KUSER_SHARED_DATA (ntddk.h)

En este tema se describe la estructura de KUSER_SHARED_DATA .

Sintaxis

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                     SystemCallPad[2];
  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 QpcShift;
    };
  };
  LARGE_INTEGER                 TimeZoneBiasEffectiveStart;
  LARGE_INTEGER                 TimeZoneBiasEffectiveEnd;
  XSTATE_CONFIGURATION          XState;
  KSYSTEM_TIME                  FeatureConfigurationChangeStamp;
  ULONG                         Spare;
  ULONG64                       UserPointerAuthMask;
} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;

Miembros

TickCountLowDeprecated

Recuento de tics bajo actual de 32 bits.

TickCountMultiplier

Multiplicador de recuento de tics.

InterruptTime

Tiempo de interrupción de 64 bits actual en unidades de 100ns.

SystemTime

Tiempo actual del sistema de 64 bits en unidades de 100ns.

TimeZoneBias

Sesgo de zona horaria de 64 bits actual.

ImageNumberLow

Número mágico de imagen baja para el sistema host.

ImageNumberHigh

Número mágico de imagen alta para el sistema host.

NtSystemRoot[260]

Copia de la raíz del sistema en unicode. Se debe tener acceso a este campo a través de la API RtlGetNtSystemRoot para obtener un resultado preciso.

MaxStackTraceDepth

Profundidad máxima del seguimiento de la pila si está habilitada la traza.

CryptoExponent

Valor de exponente criptográfico.

TimeZoneId

Id. de zona horaria.

LargePageMinimum

Define el miembro ULONGLargePageMinimum.

AitSamplingValue

Este valor controla la frecuencia de muestreo de AIT.

AppCompatFlag

Este valor controla el procesamiento de la conmutación por recuperación.

RNGSeedVersion

Versión actual de inicialización de estado de RNG raíz del kernel.

GlobalValidationRunlevel

Este valor controla el control de errores de aserción.

TimeZoneBiasStamp

Define el miembro LONGTimeZoneBiasStamp.

NtBuildNumber

El número de compilación colectivo compartido sin codificar con C o F. GetVersionEx oculta el número real.

NtProductType

Tipo de producto. Se debe tener acceso a este campo a través de la API RtlGetNtProductType para obtener un resultado preciso.

ProductTypeIsValid

Define el miembro BOOLEANProductTypeIsValid.

Reserved0[1]

Reservado para uso futuro.

NativeProcessorArchitecture

Define el miembro de USHORTNativeProcessorArchitecture.

NtMajorVersion

La versión principal de NT. Cada proceso ve una versión de su PEB, pero si el proceso se ejecuta con una vista modificada de la versión del sistema, este campo se usa para identificar correctamente la versión.

NtMinorVersion

La versión secundaria nt. Cada proceso ve una versión de su PEB, pero si el proceso se ejecuta con una vista modificada de la versión del sistema, este campo se usa para identificar correctamente la versión.

ProcessorFeatures[PROCESSOR_FEATURE_MAX]

Características del procesador.

Reserved1

Reservado para un uso futuro.

Reserved3

Reservado para un uso futuro.

TimeSlip

Página de deslizamiento de tiempo mientras está en el depurador.

AlternativeArchitecture

Arquitectura alternativa del sistema. Por ejemplo, NEC PC98xx en x86.

BootId

Secuencia de arranque, incrementada para cada intento de arranque por el cargador del sistema operativo.

SystemExpirationDate

Si el sistema es una unidad de evaluación, el campo siguiente contiene la fecha y hora en que expira la unidad de evaluación. Un valor de 0 indica que no hay expiración. Un valor distinto de cero es la hora absoluta UTC a la que expira el sistema.

SuiteMask

Compatibilidad con conjuntos de aplicaciones. Se debe tener acceso a este campo a través de la API RtlGetSuiteMask para obtener un resultado preciso.

KdDebuggerEnabled

TRUE si un depurador de kernel está conectado o habilitado.

MitigationPolicies

Directivas de mitigación.

NXSupportPolicy

Define el miembro UCHARNXSupportPolicy.

SEHValidationPolicy

Define el miembro UCHARSEHValidationPolicy.

CurDirDevicesSkippedForDlls

Define el miembro UCHARCurDirDevicesSkippedForDlls.

Reserved

Reservado para uso futuro.

CyclesPerYield

Duración medida de un rendimiento de procesador único, en ciclos. Esto lo usan los paquetes de bloqueo para determinar cuántas veces se va a girar esperando un cambio de estado antes de bloquearlo.

ActiveConsoleId

Identificador de sesión de la consola actual. Siempre cero en sistemas que no son TS. Se debe tener acceso a este campo a través de la API RtlGetActiveConsoleId para obtener un resultado preciso.

DismountCount

Los desmontajes forzados hacen que los identificadores no sean válidos. En lugar de siempre los identificadores de sondeo, se mantiene un número de desmontajes de serie que los clientes pueden usar para ver si necesitan identificadores de sondeo.

ComPlusPackage

Este campo indica el estado del paquete COM+ de 64 bits en el sistema. Indica si las imágenes COM+ del lenguaje intermedio (IL) deben usar el entorno de ejecución COM+ de 64 bits o el entorno de ejecución com+ de 32 bits.

LastSystemRITEventTickCount

Tiempo en el recuento de tics para la última entrada del usuario en todo el sistema en todas las sesiones de terminal. Para el rendimiento de MP, no se actualiza todo el tiempo (por ejemplo, una vez por minuto por sesión). Se usa para la detección de inactividad.

NumberOfPhysicalPages

Número de páginas físicas del sistema. Esto puede cambiar dinámicamente a medida que se puede agregar o quitar memoria física de un sistema en ejecución.

SafeBootMode

True si el sistema se ha arrancado en modo de arranque seguro.

VirtualizationFlags

Marcas de virtualización.

ArchStartedInEl2

Mantenga este campo de bits sincronizado con el de arc.w.

QcSlIsSupported

Mantenga este campo de bits sincronizado con el de arc.w.

Reserved12[2]

Reservado para uso futuro.

DUMMYUNIONNAME2

Se trata de un campo de bits empaquetado que contiene varias marcas relativas al estado del sistema. Deben manipularse mediante operaciones interbloqueadas. Se debe tener acceso a DbgMultiSessionSku a través de la API RtlIsMultiSessionSku para obtener un resultado preciso.

DUMMYUNIONNAME2.SharedDataFlags

Define el miembro de ULONGSharedDataFlags.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2

Define la estructura DUMMYSTRUCTNAME2 .

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgErrorPortPresent

Solo para el depurador. No debe usarse. En su lugar, use las definiciones de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgElevationEnabled

Solo para el depurador. No debe usarse. En su lugar, use las definiciones de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgVirtEnabled

Solo para el depurador. No debe usarse. En su lugar, use las definiciones de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgInstallerDetectEnabled

Solo para el depurador. No debe usarse. En su lugar, use las definiciones de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgLkgEnabled

Solo para el depurador. No debe usarse. En su lugar, use las definiciones de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgDynProcessorEnabled

Solo para el depurador. No debe usarse. En su lugar, use las definiciones de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgConsoleBrokerEnabled

Solo para el depurador. No debe usarse. En su lugar, use las definiciones de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgSecureBootEnabled

Solo para el depurador. No debe usarse. En su lugar, use las definiciones de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiSessionSku

Solo para el depurador. No debe usarse. En su lugar, use las definiciones de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiUsersInSessionSku

Solo para el depurador. No debe usarse. En su lugar, use las definiciones de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgStateSeparationEnabled

Solo para el depurador. No debe usarse. En su lugar, use las definiciones de bits.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.SpareBits

Solo para el depurador. No debe usarse. En su lugar, use las definiciones de bits.

DataFlagsPad[1]

Define el DataFlagsPad miembro de ULONG.

TestRetInstruction

Según el procesador, el código de la llamada rápida al sistema variará. Este campo solo se usa en sistemas de 32 bits.

QpcFrequency

Define el miembro LONGLONGQpcFrequency.

SystemCall

En AMD64, este valor se inicializa en un valor distinto de cero si el sistema funciona con una vista modificada del mecanismo de llamada de servicio del sistema.

Reserved2

Reservado para un uso futuro.

SystemCallPad[2]

Reservado para un uso futuro.

DUMMYUNIONNAME3

Recuento de tics de 64 bits.

DUMMYUNIONNAME3.TickCount

Define el KSYSTEM_TIME miembro TickCount.

DUMMYUNIONNAME3.TickCountQuad

Define el miembro ULONG64TickCountQuad.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

Define DUMMYSTRUCTNAME.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ReservedTickCountOverlay[3]

Define el miembro de ULONGReservedTickCountOverlay.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.TickCountPad[1]

Define el miembro de ULONGTickCountPad.

Cookie

Cookie para codificar punteros de todo el sistema.

CookiePad[1]

Reservado para uso futuro.

ConsoleSessionForegroundProcessId

Identificador de cliente del proceso que tiene el foco en el identificador de sesión de la consola activa actual. Se debe tener acceso a este campo a través de la API RtlGetConsoleSessionForegroundProcessId para obtener un resultado preciso.

TimeUpdateLock

Marcador de posición para el bloqueo de actualización de hora (interno). Estos datos se usan para implementar los servicios de hora precisos. Se alinea en un límite de línea de caché de 64 bytes y se organiza en el orden de los accesos típicos.

BaselineSystemTimeQpc

Valor del contador de rendimiento utilizado para establecer la hora actual del sistema.

BaselineInterruptTimeQpc

Valor del contador de rendimiento usado para calcular la hora de la última interrupción.

QpcSystemTimeIncrement

El número escalado de segundos de tiempo del sistema representado por un único recuento de rendimiento (este valor puede variar para lograr la sincronización de tiempo).

QpcInterruptTimeIncrement

Número escalado de segundos de tiempo de interrupción representado por un único recuento de rendimiento (este valor es constante después de arrancar el sistema).

QpcSystemTimeIncrementShift

Recuento de turnos de escalado aplicado al incremento de tiempo del sistema del contador de rendimiento.

QpcInterruptTimeIncrementShift

Recuento de turnos de escalado aplicado al incremento de tiempo de interrupción del contador de rendimiento.

UnparkedProcessorCount

Recuento de procesadores sin parque.

EnclaveFeatureMask[4]

Máscara de bits de las características de enclave admitidas en este sistema. Se debe tener acceso a este campo a través de la API RtlIsEnclareFeaturePresent para obtener un resultado preciso.

TelemetryCoverageRound

Redondeo de cobertura actual para la cobertura basada en telemetría.

UserModeGlobalLogger[16]

El siguiente campo se usa para el registro global del modo de usuario de ETW (UMGL).

ImageFileExecutionOptions

Configuración que puede habilitar el uso de opciones de ejecución de archivos de imagen de HKCU además del HKLM original.

LangGenerationCount

Generación de la estructura del kernel que contiene información del lenguaje del sistema.

Reserved4

Reservado para uso futuro.

InterruptTimeBias

Sesgo de tiempo de interrupción de 64 bits actual en unidades de 100ns.

QpcBias

Sesgo actual del contador de rendimiento de 64 bits, en unidades de contador de rendimiento antes de aplicar el desplazamiento.

ActiveProcessorCount

Número de procesadores activos.

ActiveGroupCount

Número de grupos activos.

Reserved9

Reservado para uso futuro.

QpcData

Define el QpcData miembro de USHORT .

QpcBypassEnabled

Valor booleano que indica si las consultas del contador de rendimiento pueden leer el contador directamente (omitiendo la llamada del sistema).

QpcShift

Desplazamiento aplicado al valor del contador sin formato para derivar el recuento de QPC.

TimeZoneBiasEffectiveStart

Define el LARGE_INTEGER miembro TimeZoneBiasEffectiveStart.

TimeZoneBiasEffectiveEnd

Define el miembro LARGE_INTEGERTimeZoneBiasEffectiveEnd.

XState

Configuración de estado de procesador extendida.

FeatureConfigurationChangeStamp

Define el KSYSTEM_TIME miembro FeatureConfigurationChangeStamp.

Spare

Define el miembro de ULONGSpare.

UserPointerAuthMask

Define el miembro ULONG64UserPointerAuthMask.

Requisitos

Requisito Valor
Header ntddk.h (incluya Ntddk.h)