Fungsi EnumProcessModules (psapi.h)

Mengambil handel untuk setiap modul dalam proses yang ditentukan.

Untuk mengontrol apakah aplikasi 64-bit menghitung modul 32-bit, modul 64-bit, atau kedua jenis modul, gunakan fungsi EnumProcessModulesEx .

Sintaks

BOOL EnumProcessModules(
  [in]  HANDLE  hProcess,
  [out] HMODULE *lphModule,
  [in]  DWORD   cb,
  [out] LPDWORD lpcbNeeded
);

Parameter

[in] hProcess

Handel untuk proses.

[out] lphModule

Array yang menerima daftar handel modul.

[in] cb

Ukuran array lphModule , dalam byte.

[out] lpcbNeeded

Jumlah byte yang diperlukan untuk menyimpan semua handel modul dalam array lphModule .

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan bukan nol.

Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Fungsi EnumProcessModules terutama dirancang untuk digunakan oleh debugger dan aplikasi serupa yang harus mengekstrak informasi modul dari proses lain. Jika daftar modul dalam proses target rusak atau belum diinisialisasi, atau jika daftar modul berubah selama panggilan fungsi sebagai akibat dari DLL yang dimuat atau dibongkar, EnumProcessModules mungkin gagal atau mengembalikan informasi yang salah.

Adalah ide yang baik untuk menentukan array besar nilai HMODULE , karena sulit untuk memprediksi berapa banyak modul yang akan ada dalam proses pada saat Anda memanggil EnumProcessModules. Untuk menentukan apakah array lphModule terlalu kecil untuk menahan semua handel modul untuk proses, bandingkan nilai yang dikembalikan dalam lpcbNeeded dengan nilai yang ditentukan dalam cb. Jika lpcbNeeded lebih besar dari cb, tingkatkan ukuran array dan panggil EnumProcessModules lagi.

Untuk menentukan berapa banyak modul yang dijumlahkan oleh panggilan ke EnumProcessModules, bagi nilai yang dihasilkan dalam parameter lpcbNeeded dengan sizeof(HMODULE).

Fungsi EnumProcessModules tidak mengambil handel untuk modul yang dimuat dengan LOAD_LIBRARY_AS_DATAFILE atau bendera serupa. Untuk informasi selengkapnya, lihat LoadLibraryEx.

Jangan panggil CloseHandle pada salah satu handel yang dikembalikan oleh fungsi ini. Informasi berasal dari rekam jepret, sehingga tidak ada sumber daya yang akan dibebaskan.

Jika fungsi ini dipanggil dari aplikasi 32-bit yang berjalan di WOW64, fungsi ini hanya dapat menghitung modul proses 32-bit. Jika prosesnya adalah proses 64-bit, fungsi ini gagal dan kode kesalahan terakhir adalah ERROR_PARTIAL_COPY (299).

Untuk mengambil rekam jepret dari proses tertentu dan tumpukan, modul, dan utas yang digunakan oleh proses ini, gunakan fungsi CreateToolhelp32Snapshot .

Dimulai dengan Windows 7 dan Windows Server 2008 R2, Psapi.h menetapkan nomor versi untuk fungsi PSAPI. Nomor versi PSAPI memengaruhi nama yang digunakan untuk memanggil fungsi dan pustaka yang harus dimuat program.

Jika PSAPI_VERSION adalah 2 atau lebih besar, fungsi ini didefinisikan sebagai K32EnumProcessModules di Psapi.h dan diekspor di Kernel32.lib dan Kernel32.dll. Jika PSAPI_VERSION adalah 1, fungsi ini didefinisikan sebagai EnumProcessModules di Psapi.h dan diekspor di Psapi.lib dan Psapi.dll sebagai pembungkus yang memanggil K32EnumProcessModules.

Program yang harus berjalan pada versi Windows sebelumnya serta Windows 7 dan versi yang lebih baru harus selalu memanggil fungsi ini sebagai EnumProcessModules. Untuk memastikan resolusi simbol yang benar, tambahkan Psapi.lib ke makro TARGETLIBS dan kompilasi program dengan -DPSAPI_VERSION=1. Untuk menggunakan penautan dinamis run-time, muat Psapi.dll.

Contoh

Misalnya, lihat Menghitung Semua Proses atau Menghitung Semua Modul untuk Proses.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header psapi.h
Pustaka Kernel32.lib pada Windows 7 dan Windows Server 2008 R2; Psapi.lib (jika PSAPI_VERSION=1) pada Windows 7 dan Windows Server 2008 R2; Psapi.lib di Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP
DLL Kernel32.dll pada Windows 7 dan Windows Server 2008 R2; Psapi.dll (jika PSAPI_VERSION=1) pada Windows 7 dan Windows Server 2008 R2; Psapi.dll pada Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP

Lihat juga

CreateToolhelp32Snapshot

EnumProcessModulesEx

EnumProcesses

Informasi Modul

Fungsi PSAPI