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비트 인터럽트 시간(100ns 단위)입니다.
SystemTime
현재 64비트 시스템 시간(100ns 단위)입니다.
TimeZoneBias
현재 64비트 표준 시간대 바이어스입니다.
ImageNumberLow
호스트 시스템에 대한 낮은 이미지 매직 번호입니다.
ImageNumberHigh
호스트 시스템에 대한 높은 이미지 매직 넘버입니다.
NtSystemRoot[260]
유니코드의 시스템 루트 복사본입니다. 정확한 결과를 위해서는 RtlGetNtSystemRoot API를 통해 이 필드에 액세스해야 합니다.
MaxStackTraceDepth
추적을 사용하도록 설정한 경우 최대 스택 추적 깊이입니다.
CryptoExponent
암호화 지수 값입니다.
TimeZoneId
표준 시간대 ID입니다.
LargePageMinimum
ULONG 멤버 LargePageMinimum을 정의합니다.
AitSamplingValue
이 값은 AIT 샘플링 속도를 제어합니다.
AppCompatFlag
이 값은 스위치백 처리를 제어합니다.
RNGSeedVersion
현재 커널 루트 RNG 상태 시드 버전입니다.
GlobalValidationRunlevel
이 값은 어설션 실패 처리를 제어합니다.
TimeZoneBiasStamp
LONG 멤버 TimeZoneBiasStamp를 정의합니다.
NtBuildNumber
C 또는 F로 구분되지 않은 공유 집합 빌드 번호입니다. GetVersionEx 는 실제 번호를 숨깁니다.
NtProductType
제품 유형입니다. 정확한 결과를 위해서는 RtlGetNtProductType API를 통해 이 필드에 액세스해야 합니다.
ProductTypeIsValid
BOOLEAN 멤버 ProductTypeIsValid를 정의합니다.
Reserved0[1]
다음에 사용하도록 예약됩니다.
NativeProcessorArchitecture
USHORT 멤버 NativeProcessorArchitecture를 정의합니다.
NtMajorVersion
NT 주 버전입니다. 각 프로세스는 해당 PEB에서 버전을 볼 수 있지만 프로세스가 시스템 버전의 변경된 보기로 실행되는 경우 이 필드는 버전을 올바르게 식별하는 데 사용됩니다.
NtMinorVersion
NT 부 버전입니다. 각 프로세스는 해당 PEB에서 버전을 볼 수 있지만 프로세스가 시스템 버전의 변경된 보기로 실행되는 경우 이 필드는 버전을 올바르게 식별하는 데 사용됩니다.
ProcessorFeatures[PROCESSOR_FEATURE_MAX]
프로세서 기능.
Reserved1
나중에 사용하기 위해 예약되어 있습니다.
Reserved3
나중에 사용하기 위해 예약되어 있습니다.
TimeSlip
디버거에 있는 동안 시간 미끄러짐.
AlternativeArchitecture
대체 시스템 아키텍처. 예를 들어 x86의 NEC PC98xx입니다.
BootId
OS 로더에 의해 각 부팅 시도에 대해 증가되는 부팅 시퀀스입니다.
SystemExpirationDate
시스템이 평가 단위인 경우 다음 필드에는 평가 단위가 만료되는 날짜와 시간이 포함됩니다. 값이 0이면 만료가 없음을 나타냅니다. 0이 아닌 값은 시스템이 만료되는 UTC 절대 시간입니다.
SuiteMask
제품군 지원. 정확한 결과를 얻으려면 RtlGetSuiteMask API를 통해 이 필드에 액세스해야 합니다.
KdDebuggerEnabled
커널 디버거가 연결/활성화된 경우 TRUE입니다.
MitigationPolicies
완화 정책.
NXSupportPolicy
UCHAR 멤버 NXSupportPolicy를 정의합니다.
SEHValidationPolicy
UCHAR 멤버 SEHValidationPolicy를 정의합니다.
CurDirDevicesSkippedForDlls
UCHAR 멤버 CurDirDevicesSkippedForDlls를 정의합니다.
Reserved
다음에 사용하도록 예약됩니다.
CyclesPerYield
단일 프로세서 수율의 측정된 기간(주기)입니다. 이는 잠금 패키지에서 차단하기 전에 상태 변경을 기다리는 스핀 횟수를 결정하는 데 사용됩니다.
ActiveConsoleId
현재 콘솔 세션 ID입니다. 비 TS 시스템에서는 항상 0입니다. 정확한 결과를 위해서는 RtlGetActiveConsoleId API를 통해 이 필드에 액세스해야 합니다.
DismountCount
강제 분리로 인해 핸들이 유효하지 않습니다. 항상 핸들을 프로브하는 대신 클라이언트가 핸들을 프로브해야 하는지 확인하는 데 사용할 수 있는 일련 번호의 분리가 유지 관리됩니다.
ComPlusPackage
이 필드는 시스템에서 64비트 COM+ 패키지의 상태 나타냅니다. IL(중간 언어) COM+ 이미지가 64비트 COM+ 런타임 또는 32비트 COM+ 런타임을 사용해야 하는지 여부를 나타냅니다.
LastSystemRITEventTickCount
모든 터미널 세션에서 시스템 전체의 마지막 사용자 입력에 대한 틱 시간 수입니다. MP 성능의 경우 항상 업데이트되지는 않습니다(예: 세션당 1분마다 한 번). 유휴 검색에 사용됩니다.
NumberOfPhysicalPages
시스템의 실제 페이지 수입니다. 이는 실행 중인 시스템에서 실제 메모리를 추가하거나 제거할 수 있으므로 동적으로 변경될 수 있습니다.
SafeBootMode
True이면 시스템이 안전 부팅 모드로 부팅되었습니다.
VirtualizationFlags
가상화 플래그.
ArchStartedInEl2
이 비트필드는 arc.w의 비트 필드와 동기화된 상태로 유지합니다.
QcSlIsSupported
이 비트필드는 arc.w의 비트 필드와 동기화된 상태로 유지합니다.
Reserved12[2]
다음에 사용하도록 예약됩니다.
DUMMYUNIONNAME2
시스템 상태에 관한 다양한 플래그를 포함하는 압축된 비트 필드입니다. 연동 연산을 사용하여 조작해야 합니다. 정확한 결과를 얻으려면 RtlIsMultiSessionSku API를 통해 DbgMultiSessionSku에 액세스해야 합니다.
DUMMYUNIONNAME2.SharedDataFlags
ULONG 멤버 SharedDataFlags를 정의합니다.
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]
ULONG 멤버 DataFlagsPad를 정의합니다.
TestRetInstruction
프로세서에 따라 빠른 시스템 호출에 대한 코드가 다릅니다. 이 필드는 32비트 시스템에서만 사용됩니다.
QpcFrequency
LONGLONG 멤버 QpcFrequency를 정의합니다.
SystemCall
AMD64에서 시스템이 시스템 서비스 호출 메커니즘의 변경된 보기로 작동하는 경우 이 값은 0이 아닌 값으로 초기화됩니다.
Reserved2
나중에 사용하기 위해 예약되어 있습니다.
FullNumberOfPhysicalPages
나중에 사용하기 위해 예약되어 있습니다.
SystemCallPad[1]
나중에 사용하기 위해 예약되어 있습니다.
DUMMYUNIONNAME3
64비트 틱 수입니다.
DUMMYUNIONNAME3.TickCount
KSYSTEM_TIME 멤버 TickCount를 정의합니다.
DUMMYUNIONNAME3.TickCountQuad
ULONG64 멤버 TickCountQuad를 정의합니다.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME
DUMMYSTRUCTNAME을 정의합니다.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ReservedTickCountOverlay[3]
ULONG 멤버 ReservedTickCountOverlay를 정의합니다.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.TickCountPad[1]
ULONG 멤버 TickCountPad를 정의합니다.
Cookie
포인터 시스템 전체 인코딩을 위한 쿠키입니다.
CookiePad[1]
다음에 사용하도록 예약됩니다.
ConsoleSessionForegroundProcessId
현재 활성 콘솔 세션 ID에 포커스가 있는 프로세스의 클라이언트 ID입니다. 정확한 결과를 얻으려면 RtlGetConsoleSessionForegroundProcessId API를 통해 이 필드에 액세스해야 합니다.
TimeUpdateLock
(내부) 시간 업데이트 잠금에 대한 자리 표시자입니다. 이 데이터는 정확한 시간 서비스를 구현하는 데 사용됩니다. 64비트 캐시 라인 경계에 정렬되고 일반적인 액세스 순서로 정렬됩니다.
BaselineSystemTimeQpc
현재 시스템 시간을 설정하는 데 사용되는 성능 카운터 값입니다.
BaselineInterruptTimeQpc
마지막 인터럽트 시간을 계산하는 데 사용되는 성능 카운터 값입니다.
QpcSystemTimeIncrement
단일 성능 수로 표시되는 시스템 시간(초)의 크기가 조정된 수입니다(이 값은 시간 동기화를 달성하기 위해 달라질 수 있음).
QpcInterruptTimeIncrement
단일 성능 수로 표시되는 인터럽트 시간(초)의 크기가 조정된 수입니다(이 값은 시스템이 부팅된 후 일정함).
QpcSystemTimeIncrementShift
성능 카운터 시스템 시간 증가에 적용되는 크기 조정 시프트 횟수입니다.
QpcInterruptTimeIncrementShift
성능 카운터 인터럽트 시간 증가에 적용되는 크기 조정 시프트 수입니다.
UnparkedProcessorCount
파크되지 않은 프로세서의 수입니다.
EnclaveFeatureMask[4]
이 시스템에서 지원되는 enclave 기능의 비트 마스크입니다. 정확한 결과를 얻으려면 RtlIsEnclareFeaturePresent API를 통해 이 필드에 액세스해야 합니다.
TelemetryCoverageRound
원격 분석 기반 적용 범위에 대한 현재 적용 범위 라운드입니다.
UserModeGlobalLogger[16]
다음 필드는 ETW UMGL(사용자 모드 전역 로깅)에 사용됩니다.
ImageFileExecutionOptions
원래 HKLM 외에도 HKCU에서 이미지 파일 실행 옵션을 사용할 수 있는 설정입니다.
LangGenerationCount
시스템 언어 정보를 포함하는 커널 구조의 생성입니다.
Reserved4
다음에 사용하도록 예약됩니다.
InterruptTimeBias
현재 64비트 인터럽트 시간 바이어스(100ns 단위)입니다.
QpcBias
현재 64비트 성능 카운터 바이어스(시프트가 적용되기 전의 성능 카운터 단위)입니다.
ActiveProcessorCount
활성 프로세서 수입니다.
ActiveGroupCount
활성 그룹의 수입니다.
Reserved9
다음에 사용하도록 예약됩니다.
QpcData
USHORT 멤버 QpcData를 정의합니다.
QpcBypassEnabled
성능 카운터 쿼리가 카운터를 직접 읽을 수 있는지 여부를 나타내는 부울입니다(시스템 호출 무시).
QpcReserved
다음에 사용하도록 예약됩니다.
TimeZoneBiasEffectiveStart
LARGE_INTEGER 멤버 TimeZoneBiasEffectiveStart를 정의합니다.
TimeZoneBiasEffectiveEnd
LARGE_INTEGER 멤버 TimeZoneBiasEffectiveEnd를 정의합니다.
XState
확장 프로세서 상태 구성.
FeatureConfigurationChangeStamp
KSYSTEM_TIME 멤버 FeatureConfigurationChangeStamp를 정의합니다.
Spare
ULONG 멤버 예비를 정의합니다.
UserPointerAuthMask
ULONG64 멤버 UserPointerAuthMask를 정의합니다.
XStateArm64
Reserved10[210]
요구 사항
요구 사항 | 값 |
---|---|
헤더 | ntddk.h(Ntddk.h 포함) |