Bagikan melalui


Fungsi NtQueryInformationProcess (winternl.h)

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

Mengambil informasi tentang proses yang ditentukan.

Sintaks

__kernel_entry NTSTATUS NtQueryInformationProcess(
  [in]            HANDLE           ProcessHandle,
  [in]            PROCESSINFOCLASS ProcessInformationClass,
  [out]           PVOID            ProcessInformation,
  [in]            ULONG            ProcessInformationLength,
  [out, optional] PULONG           ReturnLength
);

Parameter

[in] ProcessHandle

Handel untuk proses yang informasinya akan diambil.

[in] ProcessInformationClass

Jenis informasi proses yang akan diambil. Parameter ini dapat menjadi salah satu nilai berikut dari enumerasi PROCESSINFOCLASS .

Nilai Makna
ProcessBasicInformation
0
Mengambil penunjuk 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.

Gunakan 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 ring 3.

Gunakan 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).

Gunakan fungsi IsWow64Process2 untuk mendapatkan informasi ini.

ProcessImageFileName
27
Mengambil nilai UNICODE_STRING yang berisi nama file gambar untuk proses tersebut.

Gunakan fungsi QueryFullProcessImageName atau GetProcessImageFileName untuk mendapatkan informasi ini.

ProcessBreakOnTermination
29
Mengambil nilai ULONG yang menunjukkan apakah proses dianggap penting.
Catatan Nilai ini dapat digunakan mulai dari Windows XP dengan SP3. Mulai dari Windows 8.1, IsProcessCritical harus digunakan sebagai gantinya.
 
ProcessTelemetryIdInformation
64

Mengambil nilai PROCESS_TELEMETRY_ID_INFORMATION_TYPE yang berisi metadata tentang proses.

ProcessSubsystemInformation
75
Mengambil nilai SUBSYSTEM_INFORMATION_TYPE yang menunjukkan jenis subsistem proses. Buffer yang ditunjukkan oleh parameter ProcessInformation harus cukup besar untuk menahan enumerasi SUBSYSTEM_INFORMATION_TYPE tunggal.

[out] ProcessInformation

Penunjuk ke buffer yang disediakan oleh aplikasi panggilan tempat fungsi menulis informasi yang diminta. Ukuran informasi yang ditulis bervariasi tergantung pada jenis data 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 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 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. Sebaiknya gunakan 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 ditunjukkan oleh parameter ProcessInformation harus cukup besar untuk menahan ULONG_PTR. Jika nilai ini bukan nol, prosesnya berjalan di lingkungan WOW64. Jika tidak, prosesnya tidak berjalan di lingkungan WOW64.

Gunakan fungsi IsWow64Process2 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.

[in] ProcessInformationLength

Ukuran buffer yang diacu oleh parameter ProcessInformation , dalam byte.

[out, optional] ReturnLength

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 (jika buffer terlalu kecil, ini adalah ukuran minimum buffer yang diperlukan untuk menerima informasi dengan sukses).

Mengembalikan nilai

Fungsi mengembalikan kode keberhasilan atau kesalahan NTSTATUS.

Formulir dan signifikansi kode kesalahan NTSTATUS tercantum dalam file header Ntstatus.h yang tersedia di DDK. Lihat Kesalahan Pengelogan untuk detail selengkapnya.

Keterangan

Fungsi NtQueryInformationProcess 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 publik yang disebutkan dalam deskripsi parameter ProcessInformationClass sebagai gantinya.

Jika Anda menggunakan NtQueryInformationProcess, 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
Target Platform Windows
Header winternl.h
Pustaka ntdll.lib
DLL ntdll.dll

Lihat juga

CheckRemoteDebuggerPresent

GetProcessId

IsDebuggerPresent

IsWow64Process

IsWow64Process2