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 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;
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
Dependiendo del procesador, el código de la llamada rápida del 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 del servicio del sistema.
Reserved2
Reservado para un uso futuro.
FullNumberOfPhysicalPages
Reservado para un uso futuro.
SystemCallPad[1]
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 de 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
Número escalado de segundos de tiempo del sistema representados 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 representados 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 de idioma del sistema.
Reserved4
Reservado para uso futuro.
InterruptTimeBias
Sesgo actual de tiempo de interrupción de 64 bits en unidades de 100ns.
QpcBias
Sesgo actual del contador de rendimiento de 64 bits, en unidades de contador de rendimiento antes de aplicar el cambio.
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
Un valor booleano que indica si las consultas del contador de rendimiento pueden leer el contador directamente (pasando la llamada del sistema).
QpcReserved
Reservado para uso futuro.
TimeZoneBiasEffectiveStart
Define el miembro LARGE_INTEGERTimeZoneBiasEffectiveStart.
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.
XStateArm64
Reserved10[210]
Requisitos
Requisito | Valor |
---|---|
Header | ntddk.h (incluya Ntddk.h) |