Поделиться через


структура KUSER_SHARED_DATA (ntddk.h)

В этом разделе описывается структура KUSER_SHARED_DATA.

Синтаксис

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;

Члены

TickCountLowDeprecated

Текущий низкий 32-разрядный счетчик галок.

TickCountMultiplier

Умножение числа галок.

InterruptTime

Текущее 64-разрядное время прерывания в 100 единицах.

SystemTime

Текущее 64-разрядное системное время в 100 единицах.

TimeZoneBias

Текущая 64-разрядная предвзятость часового пояса.

ImageNumberLow

Низкий волшебный номер изображения для системы узла.

ImageNumberHigh

Высокий магический номер изображения для системы узла.

NtSystemRoot[260]

Копия корневого каталога системы в юникоде. Это поле необходимо получить через RtlGetNtSystemRoot API для точного результата.

MaxStackTraceDepth

Максимальная глубина трассировки стека, если включена трассировка.

CryptoExponent

Значение экспонента шифрования.

TimeZoneId

Идентификатор часового пояса.

LargePageMinimum

Определяет член ULONGLargePageMinimum.

AitSamplingValue

Это значение определяет частоту выборки AIT.

AppCompatFlag

Это значение управляет переключением обработки.

RNGSeedVersion

Текущая версия начального значения состояния RNG корневого ядра.

GlobalValidationRunlevel

Это значение управляет обработкой сбоев утверждения.

TimeZoneBiasStamp

Определяет элемент LONGTimeZoneBiasStamp.

NtBuildNumber

Общее коллективное число сборки, неоцененное с помощью C или F. GetVersionEx скрывает реальное число.

NtProductType

Тип продукта. К этому полю необходимо получить доступ через API RtlGetNtProductType для точного результата.

ProductTypeIsValid

Определяет элемент BOOLEANProductTypeIsValid.

Reserved0[1]

Зарезервировано для дальнейшего использования.

NativeProcessorArchitecture

Определяет элемент USHORT NativeProcessorArchitecture.

NtMajorVersion

Основная версия NT. Каждый процесс видит версию из peB, но если процесс выполняется с измененным представлением системной версии, это поле используется для правильной идентификации версии.

NtMinorVersion

Дополнительная версия NT. Каждый процесс видит версию из peB, но если процесс выполняется с измененным представлением системной версии, это поле используется для правильной идентификации версии.

ProcessorFeatures[PROCESSOR_FEATURE_MAX]

Функции процессора.

Reserved1

Зарезервировано для дальнейшего использования.

Reserved3

Зарезервировано для дальнейшего использования.

TimeSlip

Время скольжения во время в отладчике.

AlternativeArchitecture

Альтернативная архитектура системы. Например, NEC PC98xx в x86.

BootId

Последовательность загрузки, добавим для каждой попытки загрузки загрузчиком ОС.

SystemExpirationDate

Если система является единицей оценки, в следующем поле содержится дата и время истечения срока действия единицы оценки. Значение 0 указывает на отсутствие срока действия. Значение, отличное от нуля, — это абсолютное время в формате UTC, истекающее системой.

SuiteMask

Поддержка suite. Это поле должно получить доступ через API RtlGetSuiteMask для точного результата.

KdDebuggerEnabled

ЗНАЧЕНИЕ TRUE, если отладчик ядра подключен или включен.

MitigationPolicies

Политики устранения рисков.

NXSupportPolicy

Определяет элемент UCHAR NXSupportPolicy.

SEHValidationPolicy

Определяет элемент UCHAR UCHARSEHValidationPolicy.

CurDirDevicesSkippedForDlls

Определяет элемент UCHAR CurDirDevicesSkippedForDlls.

Reserved

Зарезервировано для дальнейшего использования.

CyclesPerYield

Измеряемая продолжительность одного процессора в циклах. Это используется пакетами блокировки, чтобы определить, сколько раз вращается ожидание изменения состояния перед блокировкой.

ActiveConsoleId

Текущий идентификатор сеанса консоли. Всегда ноль в системах, отличных от TS. Это поле должно быть доступ к этому полю через RtlGetActiveConsoleId API для точного результата.

DismountCount

Принудительное отключение приводит к тому, что дескриптор становится недопустимым. Вместо того чтобы всегда обрабатывать дескриптор пробы, серийный номер отключений поддерживается, что клиенты могут использовать для просмотра необходимости проверки дескрипторов.

ComPlusPackage

Это поле указывает состояние 64-разрядного пакета COM+ в системе. Он указывает, нужно ли использовать 64-разрядную среду выполнения COM+ или 32-разрядную среду выполнения COM+ или 32-разрядную среду выполнения COM+.

LastSystemRITEventTickCount

Время в тике для последних входных данных пользователей на уровне системы во всех сеансах терминала. Для производительности MP он не обновляется все время (например, один раз в минуту на сеанс). Он используется для обнаружения бездействия.

NumberOfPhysicalPages

Количество физических страниц в системе. Это может динамически измениться, так как физическая память может быть добавлена или удалена из работающей системы.

SafeBootMode

Значение true, если система была загружена в безопасном режиме загрузки.

VirtualizationFlags

Флаги виртуализации.

ArchStartedInEl2

Сохраните это битовое поле в синхронизации с одним в arc.w.

QcSlIsSupported

Сохраните это битовое поле в синхронизации с одним в arc.w.

Reserved12[2]

Зарезервировано для дальнейшего использования.

DUMMYUNIONNAME2

Это упакованное битовое поле, содержащее различные флаги, касающиеся состояния системы. Они должны управляться с помощью межблокированных операций. DbgMultiSessionSku необходимо получить через API RtlIsMultiSessionSku для точного результата.

DUMMYUNIONNAME2.SharedDataFlags

Определяет элемент ULONGSharedDataFlags.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2

Определяет структуру DUMMYSTRUCTNAME2.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgErrorPortPresent

Только для отладчика. Не используйте. Используйте вместо этого определения битов.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgElevationEnabled

Только для отладчика. Не используйте. Используйте вместо этого определения битов.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgVirtEnabled

Только для отладчика. Не используйте. Используйте вместо этого определения битов.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgInstallerDetectEnabled

Только для отладчика. Не используйте. Используйте вместо этого определения битов.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgLkgEnabled

Только для отладчика. Не используйте. Используйте вместо этого определения битов.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgDynProcessorEnabled

Только для отладчика. Не используйте. Используйте вместо этого определения битов.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgConsoleBrokerEnabled

Только для отладчика. Не используйте. Используйте вместо этого определения битов.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgSecureBootEnabled

Только для отладчика. Не используйте. Используйте вместо этого определения битов.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiSessionSku

Только для отладчика. Не используйте. Используйте вместо этого определения битов.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiUsersInSessionSku

Только для отладчика. Не используйте. Используйте вместо этого определения битов.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgStateSeparationEnabled

Только для отладчика. Не используйте. Используйте вместо этого определения битов.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.SpareBits

Только для отладчика. Не используйте. Используйте вместо этого определения битов.

DataFlagsPad[1]

Определяет член ULONGDataFlagsPad.

TestRetInstruction

В зависимости от процессора код для быстрого системного вызова будет отличаться. Это поле используется только в 32-разрядных системах.

QpcFrequency

Определяет член LONGLONGQpcFrequency.

SystemCall

В AMD64 это значение инициализируется в ненулевое значение, если система работает с измененным представлением механизма вызова системной службы.

Reserved2

Зарезервировано для дальнейшего использования.

FullNumberOfPhysicalPages

Зарезервировано для дальнейшего использования.

SystemCallPad[1]

Зарезервировано для дальнейшего использования.

DUMMYUNIONNAME3

Число 64-разрядных галок.

DUMMYUNIONNAME3.TickCount

Определяет элемент KSYSTEM_TIMETickCount.

DUMMYUNIONNAME3.TickCountQuad

Определяет элемент ULONG64TickCountQuad.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

Определяет DUMMYSTRUCTNAME.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ReservedTickCountOverlay[3]

Определяет член ULONGReservedTickCountOverlay.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.TickCountPad[1]

Определяет член ULONGTickCountPad.

Cookie

Файлы cookie для кодирования указателей на широкий спектр.

CookiePad[1]

Зарезервировано для дальнейшего использования.

ConsoleSessionForegroundProcessId

Идентификатор клиента процесса с фокусом в текущем активном идентификаторе сеанса консоли. К этому полю необходимо получить доступ через API RtlGetConsoleSessionForegroundProcessId API для точного результата.

TimeUpdateLock

Заполнитель для блокировки обновления (внутреннего) времени. Эти данные используются для реализации точных служб времени. Он выравнивается по границе строки кэша 64-байтов и упорядочивается в порядке типичных доступа.

BaselineSystemTimeQpc

Значение счетчика производительности, используемое для установления текущего системного времени.

BaselineInterruptTimeQpc

Значение счетчика производительности, используемое для вычисления последнего времени прерывания.

QpcSystemTimeIncrement

Масштабируемое количество секунд системного времени, представленное одним числом производительности (это значение может отличаться для синхронизации времени).

QpcInterruptTimeIncrement

Масштабируемое количество секунд времени прерывания, представленное одним числом производительности (это значение констант после загрузки системы).

QpcSystemTimeIncrementShift

Число сдвигов масштабирования, примененное к добавочному времени счетчика производительности.

QpcInterruptTimeIncrementShift

Число сдвигов масштабирования, примененное к добавочному времени прерывания счетчика производительности.

UnparkedProcessorCount

Количество незапаркованных процессоров.

EnclaveFeatureMask[4]

Битовая маска функций анклава, поддерживаемых в этой системе. Это поле необходимо получить через API RtlIsEnclareFeaturePresent для точного результата.

TelemetryCoverageRound

Текущий раунд покрытия для покрытия на основе телеметрии.

UserModeGlobalLogger[16]

Следующее поле используется для глобального ведения журнала в режиме пользователя ETW (UMGL).

ImageFileExecutionOptions

Параметры, которые могут включать использование параметров выполнения файла изображений из HKCU в дополнение к исходному HKLM.

LangGenerationCount

Создание структуры ядра, владеющего сведениями о языке системы.

Reserved4

Зарезервировано для дальнейшего использования.

InterruptTimeBias

Текущая 64-разрядная предвзятость времени прерывания в 100 единицах.

QpcBias

Текущая 64-разрядная предвзятость счетчика производительности в единицах счетчика производительности перед применением смены.

ActiveProcessorCount

Количество активных процессоров.

ActiveGroupCount

Количество активных групп.

Reserved9

Зарезервировано для дальнейшего использования.

QpcData

Определяет элемент QpcData USHORT.

QpcBypassEnabled

Логическое значение, указывающее, могут ли запросы счетчика производительности считывать счетчик напрямую (обход системного вызова).

QpcReserved

Зарезервировано для дальнейшего использования.

TimeZoneBiasEffectiveStart

Определяет элемент LARGE_INTEGERTimeZoneBiasEffectiveStart.

TimeZoneBiasEffectiveEnd

Определяет элемент LARGE_INTEGERTimeZoneBiasEffectiveEnd.

XState

Расширенная конфигурация состояния процессора.

FeatureConfigurationChangeStamp

Определяет элемент KSYSTEM_TIMEFeatureConfigurationChangeStamp.

Spare

Определяет член ULONGЗапасные.

UserPointerAuthMask

Определяет элемент ULONG64UserPointerAuthMask.

XStateArm64

Reserved10[210]

Требования

Требование Ценность
заголовка ntddk.h (include Ntddk.h)