Bagikan melalui


Fungsi ZwQuerySystemInformation

[ZwQuerySystemInformation tidak lagi tersedia untuk digunakan pada Windows 8. Sebagai gantinya, gunakan fungsi alternatif yang tercantum dalam topik ini.]

Mengambil informasi sistem yang ditentukan.

Sintaks

NTSTATUS WINAPI ZwQuerySystemInformation(
  _In_      SYSTEM_INFORMATION_CLASS SystemInformationClass,
  _Inout_   PVOID                    SystemInformation,
  _In_      ULONG                    SystemInformationLength,
  _Out_opt_ PULONG                   ReturnLength
);

Parameter

SystemInformationClass [in]

Jenis informasi sistem yang akan diambil. Parameter ini bisa menjadi salah satu nilai berikut dari jenis enumerasi SYSTEM_INFORMATION_CLASS .

SystemBasicInformation

Jumlah prosesor dalam sistem dalam struktur SYSTEM_BASIC_INFORMATION . Gunakan fungsi GetSystemInfo sebagai gantinya.

SystemPerformanceInformation

Struktur SYSTEM_PERFORMANCE_INFORMATION buram yang dapat digunakan untuk menghasilkan benih yang tidak dapat diprediksi untuk generator angka acak. Gunakan fungsi CryptGenRandom sebagai gantinya.

SystemTimeOfDayInformation

Struktur SYSTEM_TIMEOFDAY_INFORMATION buram yang dapat digunakan untuk menghasilkan benih yang tidak dapat diprediksi untuk generator angka acak. Gunakan fungsi CryptGenRandom sebagai gantinya.

SystemProcessInformation

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 handel yang digunakan oleh proses, penggunaan file halaman puncak, dan jumlah halaman memori yang telah dialokasikan proses.

SystemProcessorPerformanceInformation

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

SystemInterruptInformation

Struktur SYSTEM_INTERRUPT_INFORMATION buram yang dapat digunakan untuk menghasilkan benih yang tidak dapat diprediksi untuk generator angka acak. Gunakan fungsi CryptGenRandom sebagai gantinya.

SystemExceptionInformation

Struktur SYSTEM_EXCEPTION_INFORMATION buram yang dapat digunakan untuk menghasilkan benih yang tidak dapat diprediksi untuk generator angka acak. Gunakan fungsi CryptGenRandom sebagai gantinya.

SystemRegistryQuotaInformation

Struktur SYSTEM_REGISTRY_QUOTA_INFORMATION .

SystemLookasideInformation

Struktur SYSTEM_LOOKASIDE_INFORMATION buram yang dapat digunakan untuk menghasilkan benih yang tidak dapat diprediksi untuk generator angka acak. Gunakan fungsi CryptGenRandom sebagai gantinya.

SystemInformation [in, out]

Penunjuk ke buffer yang menerima informasi yang diminta. Ukuran dan struktur informasi ini bervariasi tergantung pada nilai parameter SystemInformationClass , seperti yang ditunjukkan dalam tabel berikut.

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_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;

Anggota individu struktur dicadangkan untuk penggunaan internal oleh sistem operasi.

Gunakan fungsi CryptGenRandom sebagai gantinya untuk menghasilkan data acak kriptografis.

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;

Anggota individu struktur dicadangkan untuk penggunaan internal oleh sistem operasi.

Gunakan fungsi CryptGenRandom sebagai gantinya untuk menghasilkan data acak kriptografis.

SYSTEM_PROCESS_INFORMATION

Ketika parameter SystemInformationClass adalah SystemProcessInformation, buffer yang ditunjukkan oleh parameter SystemInformation harus cukup besar untuk menahan array yang berisi struktur SYSTEM_PROCESS_INFORMATION sebanyak ada proses yang berjalan dalam sistem. Setiap struktur memiliki tata letak berikut:

typedef struct _SYSTEM_PROCESS_INFORMATION {
    ULONG NextEntryOffset;
    ULONG NumberOfThreads;
    BYTE Reserved1[48];
    PVOID Reserved2[3];
    HANDLE UniqueProcessId;
    PVOID Reserved3;
    ULONG HandleCount;
    BYTE Reserved4[4];
    PVOID Reserved5[11];
    SIZE_T PeakPagefileUsage;
    SIZE_T PrivatePageCount;
    LARGE_INTEGER Reserved6[6];
} SYSTEM_PROCESS_INFORMATION;

Anggota NumberOfThreads berisi jumlah total utas yang sedang berjalan dalam proses.

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

Anggota PeakPagefileUsage berisi jumlah maksimum byte penyimpanan file halaman yang digunakan oleh proses, dan anggota PrivatePageCount berisi jumlah halaman memori yang dialokasikan untuk penggunaan proses ini.

Anda juga dapat mengambil informasi ini menggunakan fungsi GetProcessMemoryInfo atau kelas Win32_Process .

Anggota struktur lainnya dicadangkan 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_PROCESS_INFORMATION sebanyak ada 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 1/100ths nanodetik.

Anggota KernelTime berisi jumlah waktu yang telah dihabiskan sistem untuk mengeksekusi dalam mode Kernel (termasuk semua utas dalam semua proses, pada semua prosesor), dalam 1/100th dari 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 1/100th dari nanodetik.

Gunakan GetSystemTimes sebagai gantinya untuk mengambil informasi ini.

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_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_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 dicadangkan untuk penggunaan internal oleh sistem operasi.

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;

Anggota individu struktur dicadangkan untuk penggunaan internal oleh sistem operasi.

Gunakan fungsi CryptGenRandom sebagai gantinya untuk menghasilkan data acak kriptografis.

SystemInformationLength [in]

Ukuran buffer yang diacu oleh parameter SystemInformation , dalam byte.

ReturnLength [keluar, opsional]

Penunjuk opsional ke lokasi di mana fungsi menulis ukuran aktual dari 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 ZwQuerySystemInformation dan struktur yang dikembalikannya bersifat internal untuk 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 ZwQuerySystemInformation, 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

Persyaratan Nilai
DLL
Ntdll.dll

Lihat juga

GetSystemInfo

GetProcessHandleCount

GetProcessMemoryInfo

GetSystemTimes

GetSystemRegistryQuota