Compartilhar via


estrutura KUSER_SHARED_DATA (ntddk.h)

Este tópico descreve a estrutura KUSER_SHARED_DATA .

Sintaxe

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;

Membros

TickCountLowDeprecated

Atual baixa de 32 bits de contagem de tiques.

TickCountMultiplier

Multiplicador de contagem de tiques.

InterruptTime

Tempo de interrupção atual de 64 bits em unidades de 100ns.

SystemTime

Tempo atual do sistema de 64 bits em unidades de 100ns.

TimeZoneBias

Viés de fuso horário atual de 64 bits.

ImageNumberLow

Número mágico de imagem baixa para o sistema host.

ImageNumberHigh

Número mágico de imagem alta para o sistema host.

NtSystemRoot[260]

Cópia da raiz do sistema em unicode. Esse campo deve ser acessado por meio da API RtlGetNtSystemRoot para obter um resultado preciso.

MaxStackTraceDepth

Profundidade máxima de rastreamento de pilha se o rastreamento estiver habilitado.

CryptoExponent

Valor do expoente de criptografia.

TimeZoneId

ID do fuso horário.

LargePageMinimum

Define o membro do ULONGLargePageMinimum.

AitSamplingValue

Esse valor controla a taxa de amostragem do AIT.

AppCompatFlag

Esse valor controla o processamento de switchback.

RNGSeedVersion

Versão de semente do estado RNG raiz do kernel atual.

GlobalValidationRunlevel

Esse valor controla o tratamento de falhas de asserção.

TimeZoneBiasStamp

Define o membro LONGTimeZoneBiasStamp.

NtBuildNumber

O número de build coletivo compartilhado não decorado com C ou F. GetVersionEx oculta o número real.

NtProductType

Tipo de produto. Esse campo deve ser acessado por meio da API RtlGetNtProductType para obter um resultado preciso.

ProductTypeIsValid

Define o membro BOOLEANProductTypeIsValid.

Reserved0[1]

Reservado para uso futuro.

NativeProcessorArchitecture

Define o membro do USHORTNativeProcessorArchitecture.

NtMajorVersion

A versão principal do NT. Cada processo vê uma versão de seu PEB, mas se o processo estiver em execução com uma exibição alterada da versão do sistema, esse campo será usado para identificar corretamente a versão.

NtMinorVersion

A versão secundária do NT. Cada processo vê uma versão de seu PEB, mas se o processo estiver em execução com uma exibição alterada da versão do sistema, esse campo será usado para identificar corretamente a versão.

ProcessorFeatures[PROCESSOR_FEATURE_MAX]

Recursos do processador.

Reserved1

Reservado para uso futuro.

Reserved3

Reservado para uso futuro.

TimeSlip

Deslizamento de tempo enquanto estiver no depurador.

AlternativeArchitecture

Arquitetura alternativa do sistema. Por exemplo, NEC PC98xx em x86.

BootId

Sequência de inicialização, incrementada para cada tentativa de inicialização pelo carregador do sistema operacional.

SystemExpirationDate

Se o sistema for uma unidade de avaliação, o campo a seguir conterá a data e a hora em que a unidade de avaliação expirará. Um valor de 0 indica que não há expiração. Um valor diferente de zero é o tempo absoluto UTC em que o sistema expira.

SuiteMask

Suporte ao pacote. Esse campo deve ser acessado por meio da API RtlGetSuiteMask para obter um resultado preciso.

KdDebuggerEnabled

TRUE se um depurador de kernel estiver conectado/habilitado.

MitigationPolicies

Políticas de mitigação.

NXSupportPolicy

Define o membro UCHARNXSupportPolicy.

SEHValidationPolicy

Define o membro UCHAR SEHValidationPolicy.

CurDirDevicesSkippedForDlls

Define o membro UCHARCurDirDevicesSkippedForDlls.

Reserved

Reservado para uso futuro.

CyclesPerYield

Duração medida de um único rendimento do processador, em ciclos. Isso é usado por pacotes de bloqueio para determinar quantas vezes girar aguardando uma alteração de estado antes de bloquear.

ActiveConsoleId

ID da sessão do console atual. Sempre zero em sistemas não TS. Esse campo deve ser acessado por meio da API RtlGetActiveConsoleId para obter um resultado preciso.

DismountCount

Desmontes forçados fazem com que os identificadores se tornem inválidos. Em vez de sempre investigar identificadores, um número de série de desmontes é mantido que os clientes podem usar para ver se precisam investigar identificadores.

ComPlusPackage

Esse campo indica o status do pacote COM+ de 64 bits no sistema. Ele indica se as imagens COM+ de Linguagem Intermediária (IL) precisam usar o runtime COM+ de 64 bits ou o runtime COM+ de 32 bits.

LastSystemRITEventTickCount

Tempo na contagem de tiques para a entrada do último usuário em todo o sistema em todas as sessões de terminal. Para o desempenho do MP, ele não é atualizado o tempo todo (por exemplo, uma vez por minuto por sessão). Ele é usado para detecção ociosa.

NumberOfPhysicalPages

Número de páginas físicas no sistema. Isso pode mudar dinamicamente, pois a memória física pode ser adicionada ou removida de um sistema em execução.

SafeBootMode

True se o sistema foi inicializado no modo de inicialização segura.

VirtualizationFlags

Sinalizadores de virtualização.

ArchStartedInEl2

Mantenha este campo de bits em sincronia com o do arc.w.

QcSlIsSupported

Mantenha este campo de bits em sincronia com o do arc.w.

Reserved12[2]

Reservado para uso futuro.

DUMMYUNIONNAME2

Esse é um campo de bits empacotado que contém vários sinalizadores relacionados ao estado do sistema. Eles devem ser manipulados usando operações interligadas. DbgMultiSessionSku deve ser acessado por meio da API RtlIsMultiSessionSku para obter um resultado preciso.

DUMMYUNIONNAME2.SharedDataFlags

Define o membro do ULONGSharedDataFlags.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2

Define a estrutura DUMMYSTRUCTNAME2 .

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgErrorPortPresent

Somente para depurador. Não use. Em vez disso, use as definições de bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgElevationEnabled

Somente para depurador. Não use. Em vez disso, use as definições de bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgVirtEnabled

Somente para depurador. Não use. Em vez disso, use as definições de bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgInstallerDetectEnabled

Somente para depurador. Não use. Em vez disso, use as definições de bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgLkgEnabled

Somente para depurador. Não use. Em vez disso, use as definições de bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgDynProcessorEnabled

Somente para depurador. Não use. Em vez disso, use as definições de bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgConsoleBrokerEnabled

Somente para depurador. Não use. Em vez disso, use as definições de bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgSecureBootEnabled

Somente para depurador. Não use. Em vez disso, use as definições de bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiSessionSku

Somente para depurador. Não use. Em vez disso, use as definições de bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiUsersInSessionSku

Somente para depurador. Não use. Em vez disso, use as definições de bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgStateSeparationEnabled

Somente para depurador. Não use. Em vez disso, use as definições de bit.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.SpareBits

Somente para o depurador. Não use. Em vez disso, use as definições de bit.

DataFlagsPad[1]

Define o DataFlagsPad do membro ULONG.

TestRetInstruction

Dependendo do processador, o código para chamada rápida do sistema será diferente. Esse campo só é usado em sistemas de 32 bits.

QpcFrequency

Define o membro LONGLONGQpcFrequency.

SystemCall

No AMD64, esse valor será inicializado para um valor diferente de zero se o sistema operar com uma exibição alterada do mecanismo de chamada de serviço do sistema.

Reserved2

Reservado para uso futuro.

FullNumberOfPhysicalPages

Reservado para uso futuro.

SystemCallPad[1]

Reservado para uso futuro.

DUMMYUNIONNAME3

A contagem de tiques de 64 bits.

DUMMYUNIONNAME3.TickCount

Define o membro KSYSTEM_TIMETickCount.

DUMMYUNIONNAME3.TickCountQuad

Define o membro ULONG64TickCountQuad.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

Define DUMMYSTRUCTNAME.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ReservedTickCountOverlay[3]

Define o membro ULONGReservedTickCountOverlay.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.TickCountPad[1]

Define o membro do ULONGTickCountPad.

Cookie

Cookie para codificar ponteiros de todo o sistema.

CookiePad[1]

Reservado para uso futuro.

ConsoleSessionForegroundProcessId

ID do cliente do processo com o foco na ID da sessão do console ativo atual. Esse campo deve ser acessado por meio da API RtlGetConsoleSessionForegroundProcessId para obter um resultado preciso.

TimeUpdateLock

Espaço reservado para o bloqueio de atualização de tempo (interno). Esses dados são usados para implementar os serviços de tempo precisos. Ele é alinhado em um limite de linha de cache de 64 bytes e organizado na ordem de acessos típicos.

BaselineSystemTimeQpc

O valor do contador de desempenho usado para estabelecer a hora atual do sistema.

BaselineInterruptTimeQpc

O valor do contador de desempenho usado para calcular a hora da última interrupção.

QpcSystemTimeIncrement

O número dimensionado de segundos de tempo do sistema representado por uma única contagem de desempenho (esse valor pode variar para alcançar a sincronização de tempo).

QpcInterruptTimeIncrement

O número dimensionado de segundos de tempo de interrupção representado por uma única contagem de desempenho (esse valor é constante depois que o sistema é inicializado).

QpcSystemTimeIncrementShift

A contagem de deslocamentos de dimensionamento aplicada ao incremento de tempo do sistema do contador de desempenho.

QpcInterruptTimeIncrementShift

A contagem de deslocamentos de dimensionamento aplicada ao incremento de tempo de interrupção do contador de desempenho.

UnparkedProcessorCount

A contagem de processadores nãoparked.

EnclaveFeatureMask[4]

Uma máscara de bits de recursos de enclave com suporte neste sistema. Esse campo deve ser acessado por meio da API RtlIsEnclareFeaturePresent para obter um resultado preciso.

TelemetryCoverageRound

Rodada de cobertura atual para cobertura baseada em telemetria.

UserModeGlobalLogger[16]

O campo a seguir é usado para registro em log global (UMGL) no modo de usuário ETW.

ImageFileExecutionOptions

Configurações que podem habilitar o uso de Opções de Execução de Arquivo de Imagem do HKCU, além do HKLM original.

LangGenerationCount

Geração da estrutura de kernel que contém informações de linguagem do sistema.

Reserved4

Reservado para uso futuro.

InterruptTimeBias

Desvio de tempo de interrupção atual de 64 bits em unidades de 100ns.

QpcBias

Desvio atual do contador de desempenho de 64 bits, em unidades de contador de desempenho antes que a mudança seja aplicada.

ActiveProcessorCount

Número de processadores ativos.

ActiveGroupCount

Número de grupos ativos.

Reserved9

Reservado para uso futuro.

QpcData

Define o membro do USHORT QpcData.

QpcBypassEnabled

Um booliano que indica se as consultas do contador de desempenho podem ler o contador diretamente (ignorando a chamada do sistema).

QpcReserved

Reservado para uso futuro.

TimeZoneBiasEffectiveStart

Define o membro LARGE_INTEGERTimeZoneBiasEffectiveStart.

TimeZoneBiasEffectiveEnd

Define o membro LARGE_INTEGERTimeZoneBiasEffectiveEnd.

XState

Configuração de estado do processador estendido.

FeatureConfigurationChangeStamp

Define o KSYSTEM_TIME membro FeatureConfigurationChangeStamp.

Spare

Define o membro ULONGSpare.

UserPointerAuthMask

Define o membro ULONG64UserPointerAuthMask.

XStateArm64

Reserved10[210]

Requisitos

Requisito Valor
Cabeçalho ntddk.h (inclua Ntddk.h)