Fungsi GetModuleFileNameExA (psapi.h)
Mengambil jalur yang sepenuhnya memenuhi syarat untuk file yang berisi modul yang ditentukan.
Sintaks
DWORD GetModuleFileNameExA(
[in] HANDLE hProcess,
[in, optional] HMODULE hModule,
[out] LPSTR lpFilename,
[in] DWORD nSize
);
Parameter
[in] hProcess
Handel ke proses yang berisi modul.
Handel harus memiliki hak akses PROCESS_QUERY_INFORMATION dan PROCESS_VM_READ . Untuk informasi selengkapnya, lihat Keamanan Proses dan Hak Akses.
Windows 10 dan yang lebih baru, Windows Server 2016 dan yang lebih baru: Jika parameter hModule adalah NULL, maka handel hanya memerlukan hak akses PROCESS_QUERY_LIMITED_INFORMATION.
Fungsi GetModuleFileNameEx tidak mengambil jalur untuk modul yang dimuat menggunakan bendera LOAD_LIBRARY_AS_DATAFILE . Untuk informasi selengkapnya, lihat LoadLibraryEx.
[in, optional] hModule
Handel ke modul. Jika parameter ini ADALAH NULL, GetModuleFileNameEx mengembalikan jalur file yang dapat dieksekusi dari proses yang ditentukan dalam hProcess.
[out] lpFilename
Penunjuk ke buffer yang menerima jalur yang sepenuhnya memenuhi syarat ke modul. Jika ukuran nama file lebih besar dari nilai parameter nSize , fungsi berhasil tetapi nama file dipotok dan dihentikan null.
[in] nSize
Ukuran buffer lpFilename , dalam karakter.
Mengembalikan nilai
Jika fungsi berhasil, nilai pengembalian menentukan panjang string yang disalin ke buffer.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Fungsi GetModuleFileNameEx 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, GetModuleFileNameEx mungkin gagal atau mengembalikan informasi yang salah.
Untuk mengambil nama modul dalam proses saat ini, gunakan fungsi GetModuleFileName . Ini lebih efisien dan lebih dapat diandalkan daripada memanggil GetModuleFileNameEx dengan handel ke proses saat ini.
Untuk mengambil nama modul utama yang dapat dieksekusi untuk proses jarak jauh, gunakan fungsi GetProcessImageFileName atau QueryFullProcessImageName . Ini lebih efisien dan lebih andal daripada memanggil fungsi GetModuleFileNameEx dengan handel modul NULL.
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 K32GetModuleFileNameEx di Psapi.h dan diekspor di Kernel32.lib dan Kernel32.dll. Jika PSAPI_VERSION adalah 1, fungsi ini didefinisikan sebagai GetModuleFileNameEx di Psapi.h dan diekspor di Psapi.lib dan Psapi.dll sebagai pembungkus yang memanggil K32GetModuleFileNameEx.
Program yang harus berjalan pada versi Windows yang lebih lama serta Windows 7 dan versi yang lebih baru harus selalu memanggil fungsi ini sebagai GetModuleFileNameEx. 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 Modul untuk Proses.
Catatan
Header psapi.h mendefinisikan GetModuleFileNameEx sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
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 |