struktur KUSER_SHARED_DATA (ntddk.h)

Topik ini menjelaskan struktur KUSER_SHARED_DATA .

Sintaks

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                     SystemCallPad[2];
  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 QpcShift;
    };
  };
  LARGE_INTEGER                 TimeZoneBiasEffectiveStart;
  LARGE_INTEGER                 TimeZoneBiasEffectiveEnd;
  XSTATE_CONFIGURATION          XState;
  KSYSTEM_TIME                  FeatureConfigurationChangeStamp;
  ULONG                         Spare;
  ULONG64                       UserPointerAuthMask;
} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;

Anggota

TickCountLowDeprecated

Jumlah centang 32-bit rendah saat ini.

TickCountMultiplier

Pengali jumlah centang.

InterruptTime

Waktu interupsi 64-bit saat ini dalam unit 100ns.

SystemTime

Waktu sistem 64-bit saat ini dalam unit 100ns.

TimeZoneBias

Bias zona waktu 64-bit saat ini.

ImageNumberLow

Nomor ajaib gambar rendah untuk sistem host.

ImageNumberHigh

Angka ajaib gambar tinggi untuk sistem host.

NtSystemRoot[260]

Salinan akar sistem di unicode. Bidang ini harus diakses melalui RtlGetNtSystemRoot API untuk hasil yang akurat.

MaxStackTraceDepth

Kedalaman pelacakan tumpukan maksimum jika pelacakan diaktifkan.

CryptoExponent

Nilai eksponen kripto.

TimeZoneId

ID zona waktu.

LargePageMinimum

Mendefinisikan anggota ULONGLargePageMinimum.

AitSamplingValue

Nilai ini mengontrol laju pengambilan sampel AIT.

AppCompatFlag

Nilai ini mengontrol pemrosesan switchback.

RNGSeedVersion

Versi benih status RNG akar kernel saat ini.

GlobalValidationRunlevel

Nilai ini mengontrol penanganan kegagalan pernyataan.

TimeZoneBiasStamp

Mendefinisikan anggota LONGTimeZoneBiasStamp.

NtBuildNumber

Nomor build kolektif bersama yang tidak terdekorasi dengan C atau F. GetVersionEx menyembunyikan angka riil.

NtProductType

Jenis produk. Bidang ini harus diakses melalui RtlGetNtProductType API untuk hasil yang akurat.

ProductTypeIsValid

Menentukan anggota BOOLEANProductTypeIsValid.

Reserved0[1]

Disiapkan untuk penggunaan masa mendatang.

NativeProcessorArchitecture

Mendefinisikan anggota USHORTNativeProcessorArchitecture.

NtMajorVersion

Versi utama NT. Setiap proses melihat versi dari PEB-nya, tetapi jika proses berjalan dengan tampilan yang diubah dari versi sistem, bidang ini digunakan untuk mengidentifikasi versi dengan benar.

NtMinorVersion

Versi minor NT. Setiap proses melihat versi dari PEB-nya, tetapi jika proses berjalan dengan tampilan yang diubah dari versi sistem, bidang ini digunakan untuk mengidentifikasi versi dengan benar.

ProcessorFeatures[PROCESSOR_FEATURE_MAX]

Fitur prosesor.

Reserved1

Disiapkan untuk penggunaan masa mendatang.

Reserved3

Disiapkan untuk penggunaan masa mendatang.

TimeSlip

Selip waktu saat berada di debugger.

AlternativeArchitecture

Arsitektur sistem alternatif. Misalnya, NEC PC98xx pada x86.

BootId

Urutan boot, bertambah untuk setiap upaya boot oleh pemuat OS.

SystemExpirationDate

Jika sistem adalah unit evaluasi, bidang berikut berisi tanggal dan waktu kedaluwarsa unit evaluasi. Nilai 0 menunjukkan bahwa tidak ada kedaluwarsa. Nilai bukan nol adalah waktu absolut UTC yang kedaluwarsa sistem.

SuiteMask

Dukungan suite. Bidang ini harus diakses melalui API RtlGetSuiteMask untuk hasil yang akurat.

KdDebuggerEnabled

TRUE jika debugger kernel tersambung/diaktifkan.

MitigationPolicies

Kebijakan mitigasi.

NXSupportPolicy

Mendefinisikan anggota UCHARNXSupportPolicy.

SEHValidationPolicy

Mendefinisikan anggota UCHARSEHValidationPolicy.

CurDirDevicesSkippedForDlls

Mendefinisikan anggota UCHARCurDirDevicesSkippedForDlls.

Reserved

Disiapkan untuk penggunaan masa mendatang.

CyclesPerYield

Durasi yang diukur dari satu hasil prosesor, dalam siklus. Ini digunakan oleh paket kunci untuk menentukan berapa kali berputar menunggu perubahan status sebelum memblokir.

ActiveConsoleId

Id sesi konsol saat ini. Selalu nol pada sistem non-TS. Bidang ini harus diakses melalui API RtlGetActiveConsoleId untuk hasil yang akurat.

DismountCount

Melepas paksa menyebabkan handel menjadi tidak valid. Daripada selalu menangani pemeriksaan, jumlah seri pelarangan dipertahankan yang dapat digunakan klien untuk melihat apakah mereka perlu memeriksa handel.

ComPlusPackage

Bidang ini menunjukkan status paket COM+ 64-bit pada sistem. Ini menunjukkan apakah gambar COM+ Bahasa Perantara (IL) perlu menggunakan runtime COM+ 64-bit atau runtime COM+ 32-bit.

LastSystemRITEventTickCount

Waktu dalam jumlah centang untuk input pengguna terakhir di seluruh sistem di semua sesi terminal. Untuk performa MP, ini tidak diperbarui sepanjang waktu (misalnya, sekali satu menit per sesi). Ini digunakan untuk deteksi diam.

NumberOfPhysicalPages

Jumlah halaman fisik dalam sistem. Ini dapat berubah secara dinamis karena memori fisik dapat ditambahkan atau dihapus dari sistem yang sedang berjalan.

SafeBootMode

True jika sistem di-boot dalam mode boot aman.

VirtualizationFlags

Bendera virtualisasi.

ArchStartedInEl2

Sinkronkan ladang bit ini dengan yang ada di arc.w.

QcSlIsSupported

Sinkronkan ladang bit ini dengan yang ada di arc.w.

Reserved12[2]

Disiapkan untuk penggunaan masa mendatang.

DUMMYUNIONNAME2

Ini adalah bitfield kemasan yang berisi berbagai bendera mengenai status sistem. Mereka harus dimanipulasi menggunakan operasi yang saling mengunci. DbgMultiSessionSku harus diakses melalui API RtlIsMultiSessionSku untuk hasil yang akurat.

DUMMYUNIONNAME2.SharedDataFlags

Mendefinisikan anggota ULONGSharedDataFlags.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2

Menentukan struktur DUMMYSTRUCTNAME2 .

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgErrorPortPresent

Hanya untuk debugger. Jangan gunakan. Gunakan definisi bit sebagai gantinya.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgElevationEnabled

Hanya untuk debugger. Jangan gunakan. Gunakan definisi bit sebagai gantinya.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgVirtEnabled

Hanya untuk debugger. Jangan gunakan. Gunakan definisi bit sebagai gantinya.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgInstallerDetectEnabled

Hanya untuk debugger. Jangan gunakan. Gunakan definisi bit sebagai gantinya.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgLkgEnabled

Hanya untuk debugger. Jangan gunakan. Gunakan definisi bit sebagai gantinya.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgDynProcessorEnabled

Hanya untuk debugger. Jangan gunakan. Gunakan definisi bit sebagai gantinya.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgConsoleBrokerEnabled

Hanya untuk debugger. Jangan gunakan. Gunakan definisi bit sebagai gantinya.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgSecureBootEnabled

Hanya untuk debugger. Jangan gunakan. Gunakan definisi bit sebagai gantinya.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiSessionSku

Hanya untuk debugger. Jangan gunakan. Gunakan definisi bit sebagai gantinya.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgMultiUsersInSessionSku

Hanya untuk debugger. Jangan gunakan. Gunakan definisi bit sebagai gantinya.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.DbgStateSeparationEnabled

Hanya untuk debugger. Jangan gunakan. Gunakan definisi bit sebagai gantinya.

DUMMYUNIONNAME2.DUMMYSTRUCTNAME2.SpareBits

Hanya untuk debugger. Jangan gunakan. Gunakan definisi bit sebagai gantinya.

DataFlagsPad[1]

Mendefinisikan anggota ULONGDataFlagsPad.

TestRetInstruction

Tergantung pada prosesor, kode untuk panggilan sistem cepat akan berbeda. Bidang ini hanya digunakan pada sistem 32-bit.

QpcFrequency

Menentukan QpcFrequency anggota LONGLONG.

SystemCall

Pada AMD64, nilai ini diinisialisasi ke nilai bukan nol jika sistem beroperasi dengan tampilan mekanisme panggilan layanan sistem yang diubah.

Reserved2

Disiapkan untuk penggunaan masa mendatang.

SystemCallPad[2]

Disiapkan untuk penggunaan masa mendatang.

DUMMYUNIONNAME3

Jumlah centang 64-bit.

DUMMYUNIONNAME3.TickCount

Menentukan anggota KSYSTEM_TIMETickCount.

DUMMYUNIONNAME3.TickCountQuad

Menentukan anggota ULONG64TickCountQuad.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME

Mendefinisikan DUMMYSTRUCTNAME.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ReservedTickCountOverlay[3]

Mendefinisikan anggota ULONGReservedTickCountOverlay.

DUMMYUNIONNAME3.DUMMYSTRUCTNAME.TickCountPad[1]

Mendefinisikan anggota ULONGTickCountPad.

Cookie

Cookie untuk pengodean pointer sistem lebar.

CookiePad[1]

Disiapkan untuk penggunaan masa mendatang.

ConsoleSessionForegroundProcessId

Id klien dari proses yang memiliki fokus dalam id sesi konsol aktif saat ini. Bidang ini harus diakses melalui RtlGetConsoleSessionForegroundProcessId API untuk hasil yang akurat.

TimeUpdateLock

Tempat penampung untuk kunci pembaruan waktu (internal). Data ini digunakan untuk menerapkan layanan waktu yang tepat. Ini selaras pada batas garis cache 64-byte dan diatur dalam urutan akses umum.

BaselineSystemTimeQpc

Nilai penghitung kinerja yang digunakan untuk menetapkan waktu sistem saat ini.

BaselineInterruptTimeQpc

Nilai penghitung kinerja yang digunakan untuk menghitung waktu interupsi terakhir.

QpcSystemTimeIncrement

Jumlah detik waktu sistem yang diskalakan yang diwakili oleh satu jumlah performa (nilai ini dapat bervariasi untuk mencapai sinkronisasi waktu).

QpcInterruptTimeIncrement

Jumlah detik waktu interupsi yang diskalakan yang diwakili oleh satu jumlah performa (nilai ini konstan setelah sistem di-boot).

QpcSystemTimeIncrementShift

Jumlah pergeseran penskalaan diterapkan pada kenaikan waktu sistem penghitung kinerja.

QpcInterruptTimeIncrementShift

Jumlah pergeseran penskalaan yang diterapkan ke peningkatan waktu interupsi penghitung kinerja.

UnparkedProcessorCount

Jumlah prosesor yang tidak dipark.

EnclaveFeatureMask[4]

Bitmask fitur enklave yang didukung pada sistem ini. Bidang ini harus diakses melalui RtlIsEnclareFeaturePresent API untuk hasil yang akurat.

TelemetryCoverageRound

Putaran cakupan saat ini untuk cakupan berbasis telemetri.

UserModeGlobalLogger[16]

Bidang berikut digunakan untuk pengelogan global mode pengguna ETW (UMGL).

ImageFileExecutionOptions

Pengaturan yang dapat mengaktifkan penggunaan Opsi Eksekusi File Gambar dari HKCU selain HKLM asli.

LangGenerationCount

Pembuatan struktur kernel yang memegang informasi bahasa sistem.

Reserved4

Disiapkan untuk penggunaan masa mendatang.

InterruptTimeBias

Bias waktu interupsi 64-bit saat ini dalam unit 100ns.

QpcBias

Bias penghitung kinerja 64-bit saat ini, di unit penghitung kinerja sebelum pergeseran diterapkan.

ActiveProcessorCount

Jumlah prosesor aktif.

ActiveGroupCount

Jumlah grup aktif.

Reserved9

Disiapkan untuk penggunaan masa mendatang.

QpcData

Mendefinisikan anggota USHORT QpcData.

QpcBypassEnabled

Boolean yang menunjukkan apakah kueri penghitung kinerja dapat membaca penghitung secara langsung (melewati panggilan sistem).

QpcShift

Pergeseran diterapkan ke nilai penghitung mentah untuk memperoleh jumlah QPC.

TimeZoneBiasEffectiveStart

Mendefinisikan anggota LARGE_INTEGERTimeZoneBiasEffectiveStart.

TimeZoneBiasEffectiveEnd

Mendefinisikan anggota LARGE_INTEGERTimeZoneBiasEffectiveEnd.

XState

Konfigurasi status prosesor yang diperluas.

FeatureConfigurationChangeStamp

Menentukan anggota KSYSTEM_TIMEFeatureConfigurationChangeStamp.

Spare

Mendefinisikan anggota ULONGSpare.

UserPointerAuthMask

Menentukan anggota ULONG64UserPointerAuthMask.

Persyaratan

Persyaratan Nilai
Header ntddk.h (termasuk Ntddk.h)