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