Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengambil handel modul untuk modul yang ditentukan. Modul harus dimuat oleh proses panggilan.
Untuk menghindari kondisi balapan yang dijelaskan di bagian Keterangan, gunakan fungsi
Sintaksis
HMODULE GetModuleHandleA(
[in, optional] LPCSTR lpModuleName
);
Parameter
[in, optional] lpModuleName
Nama modul yang dimuat (baik file .dll atau .exe). Jika ekstensi nama file dihilangkan, ekstensi pustaka default .dll ditambahkan. String nama file dapat menyertakan karakter titik berikutnya (.) untuk menunjukkan bahwa nama modul tidak memiliki ekstensi. String tidak harus menentukan jalur. Saat menentukan jalur, pastikan untuk menggunakan garis miring terbalik (\), bukan garis miring (/). Nama dibandingkan (kasus secara independen) dengan nama modul yang saat ini dipetakan ke ruang alamat proses panggilan.
Jika parameter ini NULL, GetModuleHandle mengembalikan handel ke file yang digunakan untuk membuat proses panggilan ( file.exe).
Fungsi GetModuleHandle
Mengembalikan nilai
Jika fungsi berhasil, nilai pengembalian adalah handel ke modul yang ditentukan.
Jika fungsi gagal, nilai yang dikembalikan adalah NULL. Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.
Komentar
Handel yang dikembalikan tidak global atau dapat diwariskan. Ini tidak dapat diduplikasi atau digunakan oleh proses lain.
Jika lpModuleName tidak menyertakan jalur dan ada lebih dari satu modul yang dimuat dengan nama dasar dan ekstensi yang sama, Anda tidak dapat memprediksi handel modul mana yang akan dikembalikan. Untuk mengatasi masalah ini, Anda dapat menentukan jalur, menggunakan rakitan berdampingan, atau menggunakan GetModuleHandleEx untuk menentukan lokasi memori daripada nama DLL.
Fungsi GetModuleHandle mengembalikan handel ke modul yang dipetakan tanpa meningkatkan jumlah referensinya. Namun, jika handel ini diteruskan ke fungsi FreeLibrary
Fungsi ini harus digunakan dengan hati-hati dalam aplikasi multithreaded. Tidak ada jaminan bahwa handel modul tetap valid antara waktu fungsi ini mengembalikan handel dan waktu digunakan. Misalnya, utas mengambil handel modul, tetapi sebelum menggunakan handel, utas kedua membebaskan modul. Jika sistem memuat modul lain, sistem dapat menggunakan kembali handel modul yang baru-baru ini dikosongkan. Oleh karena itu, utas pertama akan memiliki handel ke modul yang berbeda dari yang dimaksudkan.
Contoh
Misalnya, lihat Menggunakan Brush.
Nota
Header libloaderapi.h mendefinisikan GetModuleHandle sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta preprosektor 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
| Syarat | Nilai |
|---|---|
| klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
| server minimum yang didukung |
Windows Server 2003 [hanya aplikasi desktop] |
| Platform Target |
Windows |
| Header |
libloaderapi.h (termasuk Windows.h) |
| Pustaka |
Kernel32.lib |
| DLL |
Kernel32.dll |
Lihat juga
Fungsi Pustaka
FreeLibrary