Fungsi DisableThreadLibraryCalls (libloaderapi.h)
Menonaktifkan pemberitahuan DLL_THREAD_ATTACH dan DLL_THREAD_DETACH untuk pustaka tautan dinamis (DLL) yang ditentukan. Ini dapat mengurangi ukuran set kerja untuk beberapa aplikasi.
Sintaks
BOOL DisableThreadLibraryCalls(
[in] HMODULE hLibModule
);
Parameter
[in] hLibModule
Handel ke modul DLL tempat pemberitahuan DLL_THREAD_ATTACH dan DLL_THREAD_DETACH akan dinonaktifkan. Fungsi LoadLibrary, LoadLibraryEx, atau GetModuleHandle mengembalikan handel ini. Perhatikan bahwa Anda tidak dapat memanggil GetModuleHandle dengan NULL
karena ini mengembalikan alamat dasar gambar yang dapat dieksekusi, bukan gambar DLL.
Menampilkan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Fungsi DisableThreadLibraryCalls gagal jika DLL yang ditentukan oleh hModule memiliki penyimpanan lokal utas statis aktif, atau jika hModule adalah handel modul yang tidak valid. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Fungsi DisableThreadLibraryCalls memungkinkan DLL menonaktifkan panggilan pemberitahuan DLL_THREAD_ATTACH dan DLL_THREAD_DETACH. Ini bisa menjadi pengoptimalan yang berguna untuk aplikasi multithreaded yang memiliki banyak DLL, sering membuat dan menghapus utas, dan yang DLL-nya tidak memerlukan pemberitahuan tingkat utas lampiran/pelampiran ini. Aplikasi server panggilan prosedur jarak jauh (RPC) adalah contoh aplikasi seperti itu. Dalam aplikasi semacam ini, rutinitas inisialisasi DLL sering tetap dalam memori untuk DLL_THREAD_ATTACH layanan dan pemberitahuan DLL_THREAD_DETACH. Dengan menonaktifkan pemberitahuan, kode inisialisasi DLL tidak di-paged in karena utas dibuat atau dihapus, sehingga mengurangi ukuran kumpulan kode kerja aplikasi. Untuk menerapkan pengoptimalan, ubah kode DLL_PROCESS_ATTACH DLL untuk memanggil DisableThreadLibraryCalls.
Jangan panggil fungsi ini dari DLL yang ditautkan ke pustaka run-time C statis (CRT). CRT statis mengharuskan pemberitahuan DLL_THREAD_ATTACH dan DLL_THREAD_DETATCH berfungsi dengan baik.
Fungsi ini tidak melakukan pengoptimalan apa pun jika Thread Local Storage (TLS) statis diaktifkan. TLS statis diaktifkan saat menggunakan variabel thread_local , variabel __declspec( utas ), atau statis fungsi-lokal.
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 | libloaderapi.h (termasuk Windows.h) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |