Fungsi NtQuerySystemInformation (winternl.h)

[NtQuerySystemInformation dapat diubah atau tidak tersedia di Windows versi mendatang. Aplikasi harus menggunakan fungsi alternatif yang tercantum dalam topik ini.]

Mengambil informasi sistem yang ditentukan.

Sintaks

__kernel_entry NTSTATUS NtQuerySystemInformation(
  [in]            SYSTEM_INFORMATION_CLASS SystemInformationClass,
  [in, out]       PVOID                    SystemInformation,
  [in]            ULONG                    SystemInformationLength,
  [out, optional] PULONG                   ReturnLength
);

Parameter

[in] SystemInformationClass

Salah satu nilai yang dijumlahkan dalam SYSTEM_INFORMATION_CLASS, yang menunjukkan jenis informasi sistem yang akan diambil. Ini termasuk nilai berikut.

SystemBasicInformation

Mengembalikan jumlah prosesor dalam sistem dalam struktur SYSTEM_BASIC_INFORMATION . Gunakan fungsi GetSystemInfo sebagai gantinya.

SystemCodeIntegrityInformation

Mengembalikan struktur SYSTEM_CODEINTEGRITY_INFORMATION yang dapat digunakan untuk menentukan opsi yang diberlakukan oleh Integritas Kode pada sistem.

SystemExceptionInformation

Mengembalikan struktur SYSTEM_EXCEPTION_INFORMATION buram yang dapat digunakan untuk menghasilkan nilai awal yang tidak dapat diprediksi untuk generator angka acak. Gunakan fungsi CryptGenRandom sebagai gantinya.

SystemInterruptInformation

Mengembalikan struktur SYSTEM_INTERRUPT_INFORMATION buram yang dapat digunakan untuk menghasilkan nilai awal yang tidak dapat diprediksi untuk generator angka acak. Gunakan fungsi CryptGenRandom sebagai gantinya.

SystemKernelVaShadowInformation

Mengembalikan struktur SYSTEM_KERNEL_VA_SHADOW_INFORMATION yang dapat digunakan untuk menentukan pengaturan kontrol spekulasi untuk serangan yang melibatkan beban cache data nakal (seperti CVE-2017-5754).

SystemLeapSecondInformation

Mengembalikan struktur SYSTEM_LEAP_SECOND_INFORMATION buram yang dapat digunakan untuk mengaktifkan atau menonaktifkan lebar sistem detik lompatan. Pengaturan ini akan bertahan bahkan setelah reboot sistem.

SystemLookasideInformation

Mengembalikan struktur SYSTEM_LOOKASIDE_INFORMATION buram yang dapat digunakan untuk menghasilkan nilai awal yang tidak dapat diprediksi untuk generator angka acak. Gunakan fungsi CryptGenRandom sebagai gantinya.

SystemPerformanceInformation

Mengembalikan struktur SYSTEM_PERFORMANCE_INFORMATION buram yang dapat digunakan untuk menghasilkan nilai awal yang tidak dapat diprediksi untuk generator angka acak. Gunakan fungsi CryptGenRandom sebagai gantinya.

SystemPolicyInformation

Mengembalikan informasi kebijakan dalam struktur SYSTEM_POLICY_INFORMATION . Gunakan fungsi SLGetWindowsInformation sebagai gantinya untuk mendapatkan informasi kebijakan.

SystemProcessInformation

Mengembalikan array struktur SYSTEM_PROCESS_INFORMATION , satu untuk setiap proses yang berjalan dalam sistem.

Struktur ini berisi informasi tentang penggunaan sumber daya dari setiap proses, termasuk jumlah utas dan handel yang digunakan oleh proses, penggunaan file halaman puncak, dan jumlah halaman memori yang telah dialokasikan proses.

SystemProcessorPerformanceInformation

Mengembalikan array struktur SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION , satu untuk setiap prosesor yang diinstal dalam sistem.

SystemQueryPerformanceCounterInformation

Mengembalikan struktur SYSTEM_QUERY_PERFORMANCE_COUNTER_INFORMATION yang dapat digunakan untuk menentukan apakah sistem memerlukan transisi kernel untuk mengambil informasi penghitung kinerja resolusi tinggi melalui panggilan fungsi QueryPerformanceCounter .

SystemRegistryQuotaInformation

Mengembalikan struktur SYSTEM_REGISTRY_QUOTA_INFORMATION .

SystemSpeculationControlInformation

Mengembalikan struktur SYSTEM_SPECULATION_CONTROL_INFORMATION yang dapat digunakan untuk menentukan pengaturan kontrol spekulasi untuk serangan yang melibatkan injeksi target cabang (seperti CVE-2017-5715).

Setiap struktur SYSTEM_SPECULATION_CONTROL_INFORMATION memiliki tata letak berikut:

typedef struct _SYSTEM_SPECULATION_CONTROL_INFORMATION {
    struct {
        ULONG BpbEnabled : 1;
        ULONG BpbDisabledSystemPolicy : 1;
        ULONG BpbDisabledNoHardwareSupport : 1;
        ULONG SpecCtrlEnumerated : 1;
        ULONG SpecCmdEnumerated : 1;
        ULONG IbrsPresent : 1;
        ULONG StibpPresent : 1;
        ULONG SmepPresent : 1;
        ULONG SpeculativeStoreBypassDisableAvailable : 1;
        ULONG SpeculativeStoreBypassDisableSupported : 1;
        ULONG SpeculativeStoreBypassDisabledSystemWide : 1;
        ULONG SpeculativeStoreBypassDisabledKernel : 1;
        ULONG SpeculativeStoreBypassDisableRequired : 1;
        ULONG BpbDisabledKernelToUser : 1;
        ULONG SpecCtrlRetpolineEnabled : 1;
        ULONG SpecCtrlImportOptimizationEnabled : 1;
        ULONG Reserved : 16;
    } SpeculationControlFlags;
} SYSTEM_SPECULATION_CONTROL_INFORMATION, * PSYSTEM_SPECULATION_CONTROL_INFORMATION;

Bendera Makna
BpbEnabled Jika TRUE, fitur kontrol spekulasi didukung dan diaktifkan.
BpbDisabledSystemPolicy Jika TRUE, fitur kontrol spekulasi dinonaktifkan karena kebijakan sistem.
BpbDisabledNoHardwareSupport Jika TRUE, fitur kontrol spekulasi dinonaktifkan karena tidak adanya dukungan perangkat keras.
SpecCtrlEnumerated Jika TRUE, I386/AMD64 IA32_SPEC_CTRL MSR dihitung oleh perangkat keras.
SpecCmdEnumerated Jika TRUE, i386/AMD64 IA32_SPEC_CMD MSR dijumlahkan oleh perangkat keras.
IbrsPresent Jika TRUE, IBRS MSR i386/AMD64 diperlakukan sebagai ada.
StibpPresent Jika TRUE, MSR STIBP i386/AMD64 ada.
SmepPresent Jika TRUE, fitur SMEP ada dan diaktifkan.
SpeculativeStoreBypassDisableAvailable Jika TRUE, dukungan OS untuk SSBD ada.
SpeculativeStoreBypassDisableSupported Jika TRUE, dukungan perangkat keras untuk SSBD ada.
SpeculativeStoreBypassDisabledSystemWide Jika TRUE, SSBD diatur di seluruh sistem.
SpeculativeStoreBypassDisabledKernel Jika TRUE, SSBD diatur dalam kernel.
SpeculativeStoreBypassDisableRequired Jika TRUE, SSBD diperlukan untuk mencegah serangan spekulasi.
BpbDisabledKernelToUser Jika TRUE, prediksi cabang tidak langsung tidak dihapus pada setiap kernel ke transisi pengguna.
SpecCtrlRetpolineEnabled Jika TRUE, Retpoline diaktifkan untuk driver yang kompatibel.
SpecCtrlImportOptimizationEnabled Jika TRUE, pengoptimalan Impor diaktifkan.
Dicadangkan Bendera yang dicadangkan.
 

SystemTimeOfDayInformation

Mengembalikan struktur SYSTEM_TIMEOFDAY_INFORMATION buram yang dapat digunakan untuk menghasilkan nilai awal yang tidak dapat diprediksi untuk generator angka acak. Gunakan fungsi CryptGenRandom sebagai gantinya.

[in, out] SystemInformation

Penunjuk ke buffer yang menerima informasi yang diminta. Ukuran dan struktur informasi ini bervariasi tergantung pada nilai parameter SystemInformationClass :

SYSTEM_BASIC_INFORMATION

Ketika parameter SystemInformationClass adalah SystemBasicInformation, buffer yang ditunjukkan oleh parameter SystemInformation harus cukup besar untuk menahan struktur SYSTEM_BASIC_INFORMATION tunggal yang memiliki tata letak berikut:

typedef struct _SYSTEM_BASIC_INFORMATION {
    BYTE Reserved1[24];
    PVOID Reserved2[4];
    CCHAR NumberOfProcessors;
} SYSTEM_BASIC_INFORMATION;

Anggota NumberOfProcessors berisi jumlah prosesor yang ada dalam sistem. Gunakan GetSystemInfo sebagai gantinya untuk mengambil informasi ini.

Anggota struktur lainnya dicadangkan untuk penggunaan internal oleh sistem operasi.

SYSTEM_CODEINTEGRITY_INFORMATION

Ketika parameter SystemInformationClass adalah SystemCodeIntegrityInformation, buffer yang diarahkan oleh parameter SystemInformation harus cukup besar untuk menahan struktur SYSTEM_CODEINTEGRITY_INFORMATION tunggal yang memiliki tata letak berikut:

typedef struct _SYSTEM_CODEINTEGRITY_INFORMATION {
    ULONG  Length;
    ULONG  CodeIntegrityOptions;
} SYSTEM_CODEINTEGRITY_INFORMATION, *PSYSTEM_CODEINTEGRITY_INFORMATION;

Anggota Panjang berisi ukuran struktur dalam byte. Ini harus diatur oleh pemanggil.

Anggota CodeIntegrityOptions berisi bitmask untuk mengidentifikasi opsi integritas kode.

Nilai Makna
0x01 CODEINTEGRITY_OPTION_ENABLED Penerapan Integritas Kode mode kernel diaktifkan.
0x02 CODEINTEGRITY_OPTION_TESTSIGN Uji konten yang ditandatangani diizinkan oleh Integritas Kode.
0x04 CODEINTEGRITY_OPTION_UMCI_ENABLED Penerapan Integritas Kode mode pengguna diaktifkan.
0x08 CODEINTEGRITY_OPTION_UMCI_AUDITMODE_ENABLED Penerapan Integritas Kode mode pengguna diaktifkan dalam mode audit. Executable akan diizinkan untuk menjalankan/memuat; namun, peristiwa audit akan dicatat.
0x10 CODEINTEGRITY_OPTION_UMCI_EXCLUSIONPATHS_ENABLED Biner mode pengguna yang dijalankan dari jalur tertentu diizinkan untuk berjalan bahkan jika mereka gagal pemeriksaan integritas kode.

Jalur pengecualian tercantum dalam kunci registri berikut dalam format REG_MULTI_SZ:

  • Kunci: HKLM\SYSTEM\CurrentControlSet\Control\CI\TRSData
  • Nilai: TestPath
Jalur yang ditambahkan ke kunci ini harus dalam salah satu dari dua format:
  • Jalur (absolut atau relatif): \Program Files\TestAutomationPath
  • Biner (spesifik): \Program Files\TestAutomationPath\mybinary.exe
Jalur berikut dibatasi dan tidak dapat ditambahkan sebagai pengecualian:
  • \
  • \Windows
  • \Windows\System32
  • \Program Files
Pengecualian Jalur Bawaan: Jalur berikut dikecualikan secara default. Anda tidak perlu secara khusus menambahkannya ke pengecualian jalur. Ini hanya berlaku pada ARM (Windows Runtime).
  • \Program Files\WTT
  • \Program Files (x86)\WTT
  • \WTT\JobsWorkingDir
  • \Program Files\Common Files\Model Design Environment
  • \TAEF
  • \$ASITEMP
  • \ATDEVXCT1\WTTInstall
  • \ATUEXCT1\WTTInstall
  • \ATESCCT1\WTTInstall
  • \ATCORECT1\WTTInstall
  • \ATStressCT1\WTTInstall
  • \ATWSCCT1\WTTInstall
  • \ATFUNCT1\WTTInstall
  • \ATIDCCT1\WTTInstall
  • \ATDNTCT1\WTTInstall
0x20 CODEINTEGRITY_OPTION_TEST_BUILD Build Integritas Kode berasal dari build pengujian.
0x40 CODEINTEGRITY_OPTION_PREPRODUCTION_BUILD Build Integritas Kode berasal dari build pra-produksi.
0x80 CODEINTEGRITY_OPTION_DEBUGMODE_ENABLED Debugger kernel dilampirkan dan Integritas Kode dapat memungkinkan kode yang tidak ditandatangani untuk dimuat.
0x100 CODEINTEGRITY_OPTION_FLIGHT_BUILD Build Integritas Kode berasal dari build penerbangan.
0x200 CODEINTEGRITY_OPTION_FLIGHTING_ENABLED Konten yang ditandatangani penerbangan diizinkan oleh Integritas Kode. Konten yang ditandatangani penerbangan adalah konten yang ditandatangani oleh Otoritas Sertifikat Akar Pengembangan Microsoft 2014.
0x400 CODEINTEGRITY_OPTION_HVCI_KMCI_ENABLED Integritas Kode yang diberlakukan Hypervisor diaktifkan untuk komponen mode kernel.
0x800 CODEINTEGRITY_OPTION_HVCI_KMCI_AUDITMODE_ENABLED Integritas Kode yang diberlakukan Hypervisor diaktifkan dalam mode audit. Peristiwa audit akan direkam untuk komponen mode kernel yang tidak kompatibel dengan HVCI. Bit ini dapat diatur apakah CODEINTEGRITY_OPTION_HVCI_KMCI_ENABLED diatur atau tidak.
0x1000 CODEINTEGRITY_OPTION_HVCI_KMCI_STRICTMODE_ENABLED Integritas Kode yang diberlakukan Hypervisor diaktifkan untuk komponen mode kernel, tetapi dalam mode ketat.
0x2000 CODEINTEGRITY_OPTION_HVCI_IUM_ENABLED Integritas Kode yang diberlakukan Hypervisor diaktifkan dengan penegakan penandatanganan komponen Mode Pengguna Terisolasi.
 

SYSTEM_EXCEPTION_INFORMATION

Ketika parameter SystemInformationClass adalah SystemExceptionInformation, buffer yang diarahkan oleh parameter SystemInformation harus cukup besar untuk menahan struktur SYSTEM_EXCEPTION_INFORMATION buram untuk digunakan dalam menghasilkan benih yang tidak dapat diprediksi untuk generator angka acak. Untuk tujuan ini, struktur memiliki tata letak berikut:

typedef struct _SYSTEM_EXCEPTION_INFORMATION {
    BYTE Reserved1[16];
} SYSTEM_EXCEPTION_INFORMATION;

Anggota individu struktur dicadangkan untuk penggunaan internal oleh sistem operasi.

Gunakan fungsi CryptGenRandom sebagai gantinya untuk menghasilkan data acak kriptografis.

SYSTEM_INTERRUPT_INFORMATION

Ketika parameter SystemInformationClass adalah SystemInterruptInformation, buffer yang ditunjukkan oleh parameter SystemInformation harus cukup besar untuk menahan array yang berisi struktur SYSTEM_INTERRUPT_INFORMATION buram sebanyak ada prosesor (CPU) yang diinstal pada sistem. Setiap struktur, atau array secara keseluruhan, dapat digunakan untuk menghasilkan benih yang tidak dapat diprediksi untuk generator angka acak. Untuk tujuan ini, struktur memiliki tata letak berikut:

typedef struct _SYSTEM_INTERRUPT_INFORMATION {
    BYTE Reserved1[24];
} SYSTEM_INTERRUPT_INFORMATION;

Anggota individu struktur dicadangkan untuk penggunaan internal oleh sistem operasi.

Gunakan fungsi CryptGenRandom sebagai gantinya untuk menghasilkan data acak kriptografis.

SYSTEM_KERNEL_VA_SHADOW_INFORMATION

Ketika parameter SystemInformationClass adalah SystemKernelVaShadowInformation, buffer yang ditunjukkan oleh parameter SystemInformation harus cukup besar untuk menahan struktur SYSTEM_KERNEL_VA_SHADOW_INFORMATION tunggal yang memiliki tata letak berikut:

typedef struct _SYSTEM_KERNEL_VA_SHADOW_INFORMATION {
    struct {
        ULONG KvaShadowEnabled:1;
        ULONG KvaShadowUserGlobal:1;
        ULONG KvaShadowPcid:1;
        ULONG KvaShadowInvpcid:1;
        ULONG KvaShadowRequired:1;
        ULONG KvaShadowRequiredAvailable:1;
        ULONG InvalidPteBit:6;
        ULONG L1DataCacheFlushSupported:1;
        ULONG L1TerminalFaultMitigationPresent:1;
        ULONG Reserved:18;
    } KvaShadowFlags;
} SYSTEM_KERNEL_VA_SHADOW_INFORMATION, * PSYSTEM_KERNEL_VA_SHADOW_INFORMATION;

KvaShadowEnabled menunjukkan apakah bayangan diaktifkan.

KvaShadowUserGlobal menunjukkan bahwa pengguna/global diaktifkan.

KvaShadowPcid menunjukkan apakah PCID diaktifkan.

KvaShadowInvpcid menunjukkan apakah PCID diaktifkan dan apakah INVPCID sedang digunakan.

KvaShadowRequired menunjukkan apakah perangkat keras diketahui rentan terhadap CVE-2017-5754.

KvaShadowRequiredAvailable menunjukkan apakah bidang KvaShadowRequired didukung oleh sistem operasi.

InvalidPteBit menunjukkan bit alamat fisik yang digunakan untuk entri tabel halaman yang tidak valid, atau nol jika tidak diatur.

L1DataCacheFlushSupported menunjukkan apakah perangkat keras mendukung pembilasan cache data L1.

L1TerminalFaultMitigationPresent menunjukkan apakah sistem operasi mendukung mitigasi sistem operasi L1 terminal fault (CVE-2018-3620).

Anggota struktur yang dicadangkan dicadangkan untuk penggunaan internal oleh sistem operasi.

SYSTEM_LEAP_SECOND_INFORMATION

Ketika parameter SystemInformationClass adalah SystemLeapSecondInformation, buffer yang ditunjukkan oleh parameter SystemInformation harus cukup besar untuk menahan struktur SYSTEM_LEAP_SECOND_INFORMATION buram untuk digunakan dalam mengaktifkan atau menonaktifkan detik lompatan di seluruh sistem. Pengaturan ini akan bertahan bahkan setelah reboot sistem. Untuk tujuan ini, struktur memiliki tata letak berikut:

typedef struct _SYSTEM_LEAP_SECOND_INFORMATION {
    BOOLEAN Enabled;
    ULONG Flags;
} SYSTEM_LEAP_SECOND_INFORMATION

Bidang Bendera dicadangkan untuk digunakan di masa mendatang.

SYSTEM_LOOKASIDE_INFORMATION

Ketika parameter SystemInformationClass adalah SystemLookasideInformation, buffer yang diarahkan oleh parameter SystemInformation harus cukup besar untuk menahan struktur SYSTEM_LOOKASIDE_INFORMATION buram untuk digunakan dalam menghasilkan benih yang tidak dapat diprediksi untuk generator angka acak. Untuk tujuan ini, struktur memiliki tata letak berikut:

typedef struct _SYSTEM_LOOKASIDE_INFORMATION {
    BYTE Reserved1[32];
} SYSTEM_LOOKASIDE_INFORMATION;

Masing-masing anggota struktur disediakan untuk penggunaan internal oleh sistem operasi.

Gunakan fungsi CryptGenRandom sebagai gantinya untuk menghasilkan data acak kriptografis.

SYSTEM_PERFORMANCE_INFORMATION

Ketika parameter SystemInformationClass adalah SystemPerformanceInformation, buffer yang diarahkan oleh parameter SystemInformation harus cukup besar untuk menahan struktur SYSTEM_PERFORMANCE_INFORMATION buram untuk digunakan dalam menghasilkan benih yang tidak dapat diprediksi untuk generator angka acak. Untuk tujuan ini, struktur memiliki tata letak berikut:

typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
    BYTE Reserved1[312];
} SYSTEM_PERFORMANCE_INFORMATION;

Masing-masing anggota struktur disediakan untuk penggunaan internal oleh sistem operasi.

Gunakan fungsi CryptGenRandom sebagai gantinya untuk menghasilkan data acak kriptografis.

SYSTEM_POLICY_INFORMATION

Ketika parameter SystemInformationClass adalah SystemPolicyInformation, buffer yang ditunjukkan oleh parameter SystemInformation harus cukup besar untuk menahan struktur SYSTEM_POLICY_INFORMATION tunggal yang memiliki tata letak berikut:

typedef struct _SYSTEM_POLICY_INFORMATION {
    PVOID Reserved1[2];
    ULONG Reserved2[3];
} SYSTEM_POLICY_INFORMATION;

Masing-masing anggota struktur disediakan untuk penggunaan internal oleh sistem operasi.

Gunakan fungsi SLGetWindowsInformation sebagai gantinya untuk mendapatkan informasi kebijakan.

SYSTEM_PROCESS_INFORMATION

Ketika parameter SystemInformationClass adalah SystemProcessInformation, buffer yang diacu oleh parameter SystemInformation berisi struktur SYSTEM_PROCESS_INFORMATION untuk setiap proses. Masing-masing struktur ini segera diikuti dalam memori oleh satu atau beberapa struktur SYSTEM_THREAD_INFORMATION yang memberikan info untuk setiap utas dalam proses sebelumnya. Untuk informasi selengkapnya tentang SYSTEM_THREAD_INFORMATION, lihat bagian tentang struktur ini di artikel ini.

Buffer yang ditunjukkan oleh parameter SystemInformation harus cukup besar untuk menahan array yang berisi struktur SYSTEM_PROCESS_INFORMATION dan SYSTEM_THREAD_INFORMATION sebanyak proses dan utas yang berjalan dalam sistem. Ukuran ini ditentukan oleh parameter ReturnLength .

Setiap struktur SYSTEM_PROCESS_INFORMATION memiliki tata letak berikut:

typedef struct _SYSTEM_PROCESS_INFORMATION {
    ULONG NextEntryOffset;
    ULONG NumberOfThreads;
    BYTE Reserved1[48];
    UNICODE_STRING ImageName;
    KPRIORITY BasePriority;
    HANDLE UniqueProcessId;
    PVOID Reserved2;
    ULONG HandleCount;
    ULONG SessionId;
    PVOID Reserved3;
    SIZE_T PeakVirtualSize;
    SIZE_T VirtualSize;
    ULONG Reserved4;
    SIZE_T PeakWorkingSetSize;
    SIZE_T WorkingSetSize;
    PVOID Reserved5;
    SIZE_T QuotaPagedPoolUsage;
    PVOID Reserved6;
    SIZE_T QuotaNonPagedPoolUsage;
    SIZE_T PagefileUsage;
    SIZE_T PeakPagefileUsage;
    SIZE_T PrivatePageCount;
    LARGE_INTEGER Reserved7[6];
} SYSTEM_PROCESS_INFORMATION;

Awal item berikutnya dalam array adalah alamat item sebelumnya ditambah nilai di anggota NextEntryOffset . Untuk item terakhir dalam array, NextEntryOffset adalah 0.

Anggota NumberOfThreads berisi jumlah utas dalam proses.

Anggota ImageName berisi nama gambar proses.

Anggota BasePriority berisi prioritas dasar proses, yang merupakan prioritas awal untuk utas yang dibuat dalam proses terkait.

Anggota UniqueProcessId berisi ID proses unik proses.

Anggota HandleCount berisi jumlah total handel yang digunakan oleh proses yang dimaksud; gunakan GetProcessHandleCount untuk mengambil informasi ini sebagai gantinya.

Anggota SessionId berisi pengidentifikasi sesi sesi proses.

Anggota PeakVirtualSize berisi ukuran puncak, dalam byte, dari memori virtual yang digunakan oleh proses.

Anggota VirtualSize berisi ukuran saat ini, dalam byte, memori virtual yang digunakan oleh proses.

Anggota PeakWorkingSetSize berisi ukuran puncak, dalam kilobyte, dari rangkaian proses yang berfungsi.

Anggota QuotaPagedPoolUsage berisi kuota saat ini yang dibebankan ke proses untuk penggunaan kumpulan halaman.

Anggota QuotaNonPagedPoolUsage berisi kuota saat ini yang dibebankan ke proses untuk penggunaan kumpulan yang tidak dibayarkan.

Anggota PagefileUsage berisi jumlah byte penyimpanan file halaman yang digunakan oleh proses.

Anggota PeakPagefileUsage berisi jumlah maksimum byte penyimpanan file halaman yang digunakan oleh proses.

Anggota PrivatePageCount berisi jumlah halaman memori yang dialokasikan untuk penggunaan proses ini.

Anda juga dapat mengambil informasi PeakWorkingSetSize, QuotaPagedPoolUsage, QuotaNonPagedPoolUsage, PagefileUsage, PeakPagefileUsage, dan PrivatePageCount menggunakan fungsi GetProcessMemoryInfo atau kelas Win32_Process .

Anggota struktur lainnya disediakan untuk penggunaan internal oleh sistem operasi.

SYSTEM_THREAD_INFORMATION

Ketika parameter SystemInformationClass adalah SystemProcessInformation, buffer yang diacu oleh parameter SystemInformation berisi struktur SYSTEM_PROCESS_INFORMATION untuk setiap proses. Masing-masing struktur ini segera diikuti dalam memori oleh satu atau beberapa struktur SYSTEM_THREAD_INFORMATION yang memberikan info untuk setiap utas dalam proses sebelumnya. Untuk informasi selengkapnya tentang SYSTEM_PROCESS_INFORMATION, lihat bagian tentang struktur ini di artikel ini. Setiap struktur SYSTEM_THREAD_INFORMATION memiliki tata letak berikut:

typedef struct _SYSTEM_THREAD_INFORMATION {
    LARGE_INTEGER Reserved1[3];
    ULONG Reserved2;
    PVOID StartAddress;
    CLIENT_ID ClientId;
    KPRIORITY Priority;
    LONG BasePriority;
    ULONG Reserved3;
    ULONG ThreadState;
    ULONG WaitReason;
} SYSTEM_THREAD_INFORMATION;

Anggota StartAddress berisi alamat awal utas.

Anggota ClientId berisi ID utas dan proses yang memiliki utas.

Anggota Prioritas berisi prioritas utas dinamis.

Anggota BasePriority berisi prioritas utas dasar.

Anggota ThreadState berisi status utas saat ini.

Anggota WaitReason berisi alasan utas menunggu.

Anggota struktur lainnya disediakan untuk penggunaan internal oleh sistem operasi.

SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION

Ketika parameter SystemInformationClass adalah SystemProcessorPerformanceInformation, buffer yang ditunjukkan oleh parameter SystemInformation harus cukup besar untuk menahan array yang berisi struktur SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION sebanyak prosesor (CPU) yang diinstal dalam sistem. Setiap struktur memiliki tata letak berikut:

typedef struct
_SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {
    LARGE_INTEGER IdleTime;
    LARGE_INTEGER KernelTime;
    LARGE_INTEGER UserTime;
    LARGE_INTEGER Reserved1[2];
    ULONG Reserved2;
} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;

Anggota IdleTime berisi jumlah waktu sistem diam, dalam interval 100 nanodetik.

Anggota KernelTime berisi jumlah waktu yang telah dihabiskan sistem untuk dieksekusi dalam mode Kernel (termasuk semua utas di semua prosesor, pada semua prosesor), dalam interval 100 nanodetik.

Anggota UserTime berisi jumlah waktu yang telah dihabiskan sistem untuk dieksekusi dalam mode Pengguna (termasuk semua utas dalam semua proses, pada semua prosesor), dalam interval 100 nanodetik.

Gunakan GetSystemTimes sebagai gantinya untuk mengambil informasi ini.

SYSTEM_QUERY_PERFORMANCE_COUNTER_INFORMATION

Ketika parameter SystemInformationClass adalah SystemQueryPerformanceCounterInformation, buffer yang ditunjukkan oleh parameter SystemInformation harus cukup besar untuk menahan struktur SYSTEM_QUERY_PERFORMANCE_COUNTER_INFORMATION tunggal yang memiliki tata letak berikut:

typedef struct _SYSTEM_QUERY_PERFORMANCE_COUNTER_INFORMATION {
    ULONG                           Version;
    QUERY_PERFORMANCE_COUNTER_FLAGS Flags;
    QUERY_PERFORMANCE_COUNTER_FLAGS ValidFlags;
} SYSTEM_QUERY_PERFORMANCE_COUNTER_INFORMATION;

Anggota Bendera dan ValidFlagsQUERY_PERFORMANCE_COUNTER_FLAGS struktur yang memiliki tata letak berikut:

typedef struct _QUERY_PERFORMANCE_COUNTER_FLAGS {
    union {
        struct {
            ULONG KernelTransition:1;
            ULONG Reserved:31;
        };
        ULONG ul;
    };
} QUERY_PERFORMANCE_COUNTER_FLAGS;

Anggota ValidFlags dari struktur SYSTEM_QUERY_PERFORMANCE_COUNTER_INFORMATION menunjukkan bit mana dari anggota Bendera yang berisi informasi yang valid. Jika transisi kernel diperlukan, bit KernelTransition diatur dalam ValidFlags dan Flags. Jika transisi kernel tidak diperlukan, bit KernelTransition diatur dalam ValidFlags dan dibersihkan di Bendera.

SYSTEM_REGISTRY_QUOTA_INFORMATION

Ketika parameter SystemInformationClass adalah SystemRegistryQuotaInformation, buffer yang ditunjukkan oleh parameter SystemInformation harus cukup besar untuk menahan struktur SYSTEM_REGISTRY_QUOTA_INFORMATION tunggal yang memiliki tata letak berikut:

typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION {
    ULONG RegistryQuotaAllowed;
    ULONG RegistryQuotaUsed;
    PVOID Reserved1;
} SYSTEM_REGISTRY_QUOTA_INFORMATION;

Anggota RegistryQuotaAllowed berisi ukuran maksimum, dalam byte, yang dapat dicapai Registri pada sistem ini.

Anggota RegistryQuotaUsed berisi ukuran Registri saat ini, dalam byte.

Gunakan GetSystemRegistryQuota sebagai gantinya untuk mengambil informasi ini.

Anggota struktur lainnya disediakan untuk penggunaan internal oleh sistem operasi.

SYSTEM_SPECULATION_CONTROL_INFORMATION

Ketika parameter SystemInformationClass adalah SystemSpeculationControlInformation, buffer yang ditunjukkan oleh parameter SystemInformation harus cukup besar untuk menahan struktur SYSTEM_SPECULATION_CONTROL_INFORMATION tunggal yang memiliki tata letak berikut:

typedef struct _SYSTEM_SPECULATION_CONTROL_INFORMATION {
    struct {
         ULONG BpbEnabled:1;
         ULONG BpbDisabledSystemPolicy:1;
         ULONG BpbDisabledNoHardwareSupport:1;
         ULONG SpecCtrlEnumerated:1;
         ULONG SpecCmdEnumerated:1;
         ULONG IbrsPresent:1;
         ULONG StibpPresent:1;
         ULONG SmepPresent:1;
         ULONG SpeculativeStoreBypassDisableAvailable:1;
         ULONG SpeculativeStoreBypassDisableSupported:1;
         ULONG SpeculativeStoreBypassDisabledSystemWide:1;
         ULONG SpeculativeStoreBypassDisabledKernel:1;
         ULONG SpeculativeStoreBypassDisableRequired:1;
         ULONG BpbDisabledKernelToUser:1;
         ULONG Reserved:18;
    } SpeculationControlFlags;

} SYSTEM_SPECULATION_CONTROL_INFORMATION, * PSYSTEM_SPECULATION_CONTROL_INFORMATION;

BpbEnabled menunjukkan apakah fitur kontrol spekulasi didukung dan diaktifkan.

BpbDisabledSystemPolicy menunjukkan apakah fitur kontrol spekulasi dinonaktifkan karena kebijakan sistem.

BpbDisabledNoHardwareSupport apakah fitur kontrol spekulasi dinonaktifkan karena tidak adanya dukungan perangkat keras.

SpecCtrlEnumerated apakah IA32_SPEC_CTRL MSR dijumlahkan oleh perangkat keras.

SpecCmdEnumerated menunjukkan apakah IA32_SPEC_CMD MSR dijumlahkan oleh perangkat keras.

IbrsPresent menunjukkan apakah IBRS MSR diperlakukan sebagai hadir.

StibpPresent menunjukkan apakah STIBP MSR ada.

SmepPresent menunjukkan apakah fitur SMEP ada dan diaktifkan.

SpeculativeStoreBypassDisableAvailable menunjukkan apakah bidang speculative store bypass disable (SSBD) lainnya dalam struktur data ini didukung oleh sistem operasi.

SpeculativeStoreBypassDisableSupported menunjukkan apakah dukungan perangkat keras untuk SSBD ada.

SpeculativeStoreBypassDisabledSystemWide menunjukkan apakah SSBD telah diaktifkan di seluruh sistem.

SpeculativeStoreBypassDisabledKernel menunjukkan apakah SSBD telah dinonaktifkan untuk mode kernel.

SpeculativeStoreBypassDisableRequired menunjukkan apakah perangkat keras diketahui rentan terhadap bypass penyimpanan spekulatif.

BpbDisabledKernelToUser menunjukkan apakah prediksi cabang tidak langsung dibersihkan pada setiap kernel ke transisi pengguna.

Anggota struktur yang dicadangkan disediakan untuk penggunaan internal oleh sistem operasi.

SYSTEM_TIMEOFDAY_INFORMATION

Ketika parameter SystemInformationClass adalah SystemTimeOfDayInformation, buffer yang diarahkan oleh parameter SystemInformation harus cukup besar untuk menahan struktur SYSTEM_TIMEOFDAY_INFORMATION buram untuk digunakan dalam menghasilkan benih yang tidak dapat diprediksi untuk generator angka acak. Untuk tujuan ini, struktur memiliki tata letak berikut:

typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
    BYTE Reserved1[48];
} SYSTEM_TIMEOFDAY_INFORMATION;

Masing-masing anggota struktur disediakan untuk penggunaan internal oleh sistem operasi.

Gunakan fungsi CryptGenRandom sebagai gantinya untuk menghasilkan data acak kriptografis.

[in] SystemInformationLength

Ukuran buffer yang diacu oleh parameter SystemInformation , dalam byte.

[out, optional] ReturnLength

Penunjuk opsional ke lokasi tempat fungsi menulis ukuran aktual informasi yang diminta. Jika ukuran tersebut kurang dari atau sama dengan
Parameter SystemInformationLength , fungsi menyalin informasi ke dalam buffer SystemInformation ; jika tidak, ia mengembalikan kode kesalahan NTSTATUS dan mengembalikan di ReturnLength ukuran buffer yang diperlukan untuk menerima informasi yang diminta.

Mengembalikan nilai

Mengembalikan kode keberhasilan atau kesalahan NTSTATUS.

Formulir dan signifikansi kode kesalahan NTSTATUS tercantum dalam file header Ntstatus.h yang tersedia di DDK, dan dijelaskan dalam dokumentasi DDK.

Keterangan

Fungsi NtQuerySystemInformation dan struktur yang dikembalikannya bersifat internal ke sistem operasi dan dapat berubah dari satu rilis Windows ke rilis lainnya. Untuk mempertahankan kompatibilitas aplikasi Anda, lebih baik menggunakan fungsi alternatif yang disebutkan sebelumnya sebagai gantinya.

Jika Anda menggunakan NtQuerySystemInformation, akses fungsi melalui penautan dinamis run-time. Ini memberi kode Anda kesempatan untuk merespons dengan baik jika fungsi telah diubah atau dihapus dari sistem operasi. Namun, perubahan tanda tangan mungkin tidak dapat dideteksi.

Fungsi ini tidak memiliki pustaka impor terkait. Anda harus menggunakan fungsi LoadLibrary dan GetProcAddress untuk menautkan secara dinamis ke Ntdll.dll.

Persyaratan

   
Target Platform Windows
Header winternl.h
Pustaka ntdll.lib
DLL ntdll.dll

Lihat juga

GetProcessHandleCount

GetProcessMemoryInfo

GetSystemInfo

GetSystemRegistryQuota

GetSystemTimes