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 포함)