Fungsi GetModuleBaseNameA (psapi.h)
Mengambil nama dasar modul yang ditentukan.
Sintaks
DWORD GetModuleBaseNameA(
[in] HANDLE hProcess,
[in, optional] HMODULE hModule,
[out] LPSTR lpBaseName,
[in] DWORD nSize
);
Parameter
[in] hProcess
Handel untuk 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.
[in, optional] hModule
Handel ke modul. Jika parameter ini NULL, fungsi ini mengembalikan nama file yang digunakan untuk membuat proses panggilan.
[out] lpBaseName
Penunjuk ke buffer yang menerima nama dasar modul. Jika nama dasar lebih panjang dari jumlah maksimum karakter yang ditentukan oleh parameter nSize , nama dasar dipotong.
[in] nSize
Ukuran buffer lpBaseName , dalam karakter.
Menampilkan nilai
Jika fungsi berhasil, nilai pengembalian menentukan panjang string yang disalin ke buffer, dalam karakter.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Fungsi GetModuleBaseName 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, GetModuleBaseName mungkin gagal atau mengembalikan informasi yang salah.
Untuk mengambil nama dasar modul dalam proses saat ini, gunakan fungsi GetModuleFileName untuk mengambil nama modul lengkap lalu gunakan panggilan fungsi seperti strrchr(szmodulename, '\')
untuk memindai ke awal nama dasar dalam string nama modul. Ini lebih efisien dan lebih dapat diandalkan daripada memanggil GetModuleBaseName dengan handel ke proses saat ini.
Untuk mengambil nama dasar modul utama yang dapat dieksekusi untuk proses jarak jauh, gunakan fungsi GetProcessImageFileName atau QueryFullProcessImageName untuk mengambil nama modul lalu gunakan strrchr
fungsi seperti yang dijelaskan dalam paragraf sebelumnya. Ini lebih efisien dan lebih andal daripada memanggil GetModuleBaseName dengan handel modul NULL.
Fungsi GetModuleBaseName tidak mengambil nama dasar untuk modul yang dimuat dengan bendera LOAD_LIBRARY_AS_DATAFILE . Untuk informasi selengkapnya, lihat LoadLibraryEx.
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 K32GetModuleBaseName di Psapi.h dan diekspor di Kernel32.lib dan Kernel32.dll. Jika PSAPI_VERSION adalah 1, fungsi ini didefinisikan sebagai GetModuleBaseName di Psapi.h dan diekspor dalam Psapi.lib dan Psapi.dll sebagai pembungkus yang memanggil K32GetModuleBaseName.
Program yang harus berjalan pada versi Windows yang lebih lama serta Windows 7 dan versi yang lebih baru harus selalu memanggil fungsi ini sebagai GetModuleBaseName. 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.
Catatan
Header psapi.h mendefinisikan GetModuleBaseName sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor 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
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 |