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