Fungsi ZwQueryInformationProcess
[ZwQueryInformationProcess mungkin diubah atau tidak tersedia di versi Windows yang akan datang. Aplikasi harus menggunakan fungsi alternatif yang tercantum dalam topik ini.]
Mengambil informasi tentang proses yang ditentukan.
Sintaks
NTSTATUS WINAPI ZwQueryInformationProcess(
_In_ HANDLE ProcessHandle,
_In_ PROCESSINFOCLASS ProcessInformationClass,
_Out_ PVOID ProcessInformation,
_In_ ULONG ProcessInformationLength,
_Out_opt_ PULONG ReturnLength
);
Parameter
-
ProcessHandle [in]
-
Handel ke proses yang informasinya akan diambil.
-
ProcessInformationClass [in]
-
Jenis informasi proses yang akan diambil. Parameter ini dapat menjadi salah satu nilai berikut dari enumerasi PROCESSINFOCLASS .
Nilai Makna - ProcessBasicInformation
- 0
Mengambil pointer ke struktur PEB yang dapat digunakan untuk menentukan apakah proses yang ditentukan sedang di-debug, dan nilai unik yang digunakan oleh sistem untuk mengidentifikasi proses yang ditentukan.
Yang terbaik adalah menggunakan fungsi CheckRemoteDebuggerPresent dan GetProcessId untuk mendapatkan informasi ini.- ProcessDebugPort
- 7
Mengambil nilai DWORD_PTR yang merupakan nomor port debugger untuk proses tersebut. Nilai bukan nol menunjukkan bahwa proses sedang dijalankan di bawah kontrol debugger cincin 3.
Yang terbaik adalah menggunakan fungsi CheckRemoteDebuggerPresent atau IsDebuggerPresent .- ProcessWow64Information
- 26
Menentukan apakah proses berjalan di lingkungan WOW64 (WOW64 adalah emulator x86 yang memungkinkan aplikasi berbasis Win32 berjalan pada Windows 64-bit).
Yang terbaik adalah menggunakan fungsi IsWow64Process untuk mendapatkan informasi ini.- ProcessImageFileName
- 27
Mengambil nilai UNICODE_STRING yang berisi nama file gambar untuk proses tersebut. ProcessBreakOnTermination
29Mengambil nilai ULONG yang menunjukkan apakah prosesnya dianggap penting.
Catatan: Nilai ini dapat digunakan mulai dari Windows XP dengan SP3. Mulai windows 8.1, IsProcessCritical harus digunakan sebagai gantinya.- ProcessProtectionInformation
- 61
Mengambil nilai BYTE yang menunjukkan jenis proses yang dilindungi dan penanda tangan proses yang dilindungi. -
ProcessInformation [out]
-
Penunjuk ke buffer yang disediakan oleh aplikasi panggilan tempat fungsi menulis informasi yang diminta. Ukuran informasi yang ditulis bervariasi tergantung pada nilai parameter ProcessInformationClass :
-
PROCESS_BASIC_INFORMATION
-
Ketika parameter ProcessInformationClass adalah ProcessBasicInformation, buffer yang ditunjukkan oleh parameter ProcessInformation harus cukup besar untuk menahan struktur PROCESS_BASIC_INFORMATION tunggal yang memiliki tata letak berikut:
typedef struct _PROCESS_BASIC_INFORMATION { NTSTATUS ExitStatus; PPEB PebBaseAddress; ULONG_PTR AffinityMask; KPRIORITY BasePriority; ULONG_PTR UniqueProcessId; ULONG_PTR InheritedFromUniqueProcessId; } PROCESS_BASIC_INFORMATION;
Bidang Makna ExitStatus Berisi nilai yang sama dengan yang akan dikembalikan GetExitCodeProcess . Namun penggunaan GetExitCodeProcess lebih disukai untuk kejelasan dan keamanan. PebBaseAddress Menunjuk ke struktur PEB . AffinityMask Dapat ditransmisikan ke DWORD dan berisi nilai yang sama dengan yang akan dikembalikan GetProcessAffinityMask untuk lpProcessAffinityMask
parameter .BasePriority Berisi prioritas proses seperti yang dijelaskan dalam Prioritas Penjadwalan. UniqueProcessId Dapat ditransmisikan ke DWORD dan berisi pengidentifikasi unik untuk proses ini. Yang terbaik adalah menggunakan fungsi GetProcessId untuk mengambil informasi ini. InheritedFromUniqueProcessId Dapat ditransmisikan ke DWORD dan berisi pengidentifikasi unik untuk proses induk. -
ULONG_PTR
-
Ketika parameter ProcessInformationClass adalah ProcessWow64Information, buffer yang diarahkan oleh parameter ProcessInformation harus cukup besar untuk menahan ULONG_PTR. Jika nilai ini bukan nol, prosesnya berjalan di lingkungan WOW64; jika tidak, jika nilainya sama dengan nol, prosesnya tidak berjalan di lingkungan WOW64.
Yang terbaik adalah menggunakan fungsi IsWow64Process untuk menentukan apakah proses berjalan di lingkungan WOW64.
-
UNICODE_STRING
-
Ketika parameter ProcessInformationClass adalah ProcessImageFileName, buffer yang diarahkan oleh parameter ProcessInformation harus cukup besar untuk menahan struktur UNICODE_STRING serta string itu sendiri. String yang disimpan dalam anggota Buffer adalah nama file gambar.
Jika buffer terlalu kecil, fungsi gagal dengan kode kesalahan STATUS_INFO_LENGTH_MISMATCH dan parameter ReturnLength diatur ke ukuran buffer yang diperlukan.
-
PS_PROTECTION
-
Ketika parameter ProcessInformationClass adalah ProcessProtectionInformation, buffer yang ditunjukkan oleh parameter ProcessInformation harus cukup besar untuk menahan struktur PS_PROTECTION tunggal yang memiliki tata letak berikut:
typedef struct _PS_PROTECTION { union { UCHAR Level; struct { UCHAR Type : 3; UCHAR Audit : 1; // Reserved UCHAR Signer : 4; }; }; } PS_PROTECTION, *PPS_PROTECTION;
3 bit pertama berisi jenis proses yang dilindungi:
typedef enum _PS_PROTECTED_TYPE { PsProtectedTypeNone = 0, PsProtectedTypeProtectedLight = 1, PsProtectedTypeProtected = 2 } PS_PROTECTED_TYPE, *PPS_PROTECTED_TYPE;
4 bit teratas berisi penanda tangan proses yang dilindungi:
typedef enum _PS_PROTECTED_SIGNER { PsProtectedSignerNone = 0, PsProtectedSignerAuthenticode, PsProtectedSignerCodeGen, PsProtectedSignerAntimalware, PsProtectedSignerLsa, PsProtectedSignerWindows, PsProtectedSignerWinTcb, PsProtectedSignerWinSystem, PsProtectedSignerApp, PsProtectedSignerMax } PS_PROTECTED_SIGNER, *PPS_PROTECTED_SIGNER;
-
-
ProcessInformationLength [in]
-
Ukuran buffer yang diacu oleh parameter ProcessInformation , dalam byte.
-
ReturnLength [keluar, opsional]
-
Penunjuk ke variabel di mana fungsi mengembalikan ukuran informasi yang diminta. Jika fungsi berhasil, ini adalah ukuran informasi yang ditulis ke buffer yang diacu oleh parameter ProcessInformation , tetapi jika buffer terlalu kecil, ini adalah ukuran minimum buffer yang diperlukan untuk menerima informasi dengan sukses.
Menampilkan nilai
Mengembalikan keberhasilan NTSTATUS atau kode kesalahan.
Formulir dan signifikansi kode kesalahan NTSTATUS tercantum dalam file header Ntstatus.h yang tersedia di DDK, dan dijelaskan dalam dokumentasi DDK di bawah Kernel-Mode Arsitektur Driver / Panduan Desain / Teknik Pemrograman Driver / Kesalahan Pengelogan.
Keterangan
Fungsi ZwQueryInformationProcess 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 publik yang disebutkan dalam deskripsi parameter ProcessInformationClass sebagai gantinya.
Jika Anda menggunakan ZwQueryInformationProcess, 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 |
---|---|
Klien minimum yang didukung |
Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung |
Windows Server 2003 [hanya aplikasi desktop] |
DLL |
|
Lihat juga