Bagikan melalui


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

Lihat juga

Fungsi Entry-Point Pustaka Dynamic-Link

Fungsi Pustaka Dynamic-Link

FreeLibraryAndExitThread

Api Vertdll tersedia di enklave VBS