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:
|
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk