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


структура 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]

Копия корневого каталога системы в Юникоде. Доступ к этому полю должен осуществляться через API RtlGetNtSystemRoot для получения точного результата.

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

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

NtMajorVersion

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

NtMinorVersion

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

ProcessorFeatures[PROCESSOR_FEATURE_MAX]

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

Reserved1

Зарезервировано для будущего использования.

Reserved3

Зарезервировано для будущего использования.

TimeSlip

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

AlternativeArchitecture

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

BootId

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

SystemExpirationDate

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

SuiteMask

Поддержка набора. Доступ к этому полю должен осуществляться через API RtlGetSuiteMask для получения точного результата.

KdDebuggerEnabled

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

MitigationPolicies

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

NXSupportPolicy

Определяет NXSupportPolicy члена UCHAR.

SEHValidationPolicy

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

CurDirDevicesSkippedForDlls

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

Reserved

Зарезервировано для последующего использования.

CyclesPerYield

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

ActiveConsoleId

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

DismountCount

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

ComPlusPackage

Это поле указывает состояние 64-разрядного пакета COM+ в системе. Он указывает, должны ли образы COM+ на промежуточном языке (IL) использовать 64-разрядную среду выполнения 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

Определяет член LONGLONG QpcFrequency.

SystemCall

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

Reserved2

Зарезервировано для будущего использования.

FullNumberOfPhysicalPages

Зарезервировано для будущего использования.

SystemCallPad[1]

Зарезервировано для будущего использования.

DUMMYUNIONNAME3

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

DUMMYUNIONNAME3.TickCount

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

DUMMYUNIONNAME3.TickCountQuad

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

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

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

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ReservedTickCountOverlay[3]

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

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.TickCountPad[1]

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

Cookie

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

CookiePad[1]

Зарезервировано для последующего использования.

ConsoleSessionForegroundProcessId

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

TimeUpdateLock

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

BaselineSystemTimeQpc

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

BaselineInterruptTimeQpc

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

QpcSystemTimeIncrement

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

QpcInterruptTimeIncrement

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

QpcSystemTimeIncrementShift

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

QpcInterruptTimeIncrementShift

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

UnparkedProcessorCount

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

EnclaveFeatureMask[4]

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

TelemetryCoverageRound

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

UserModeGlobalLogger[16]

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

ImageFileExecutionOptions

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

LangGenerationCount

Создание структуры ядра, в которую встроена информация о системных языках.

Reserved4

Зарезервировано для последующего использования.

InterruptTimeBias

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

QpcBias

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

ActiveProcessorCount

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

ActiveGroupCount

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

Reserved9

Зарезервировано для последующего использования.

QpcData

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

QpcBypassEnabled

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

QpcReserved

Зарезервировано для последующего использования.

TimeZoneBiasEffectiveStart

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

TimeZoneBiasEffectiveEnd

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

XState

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

FeatureConfigurationChangeStamp

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

Spare

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

UserPointerAuthMask

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

XStateArm64

Reserved10[210]

Требования

Требование Значение
Заголовок ntddk.h (включая Ntddk.h)