<Return[D]><Top>

DisableThreadLibraryCalls

Declare Function Api_DisableThreadLibraryCalls& Lib "kernel32" Alias "DisableThreadLibraryCalls" (ByVal hLibModule&)

Declare Function DisableThreadLibraryCalls Lib "kernel32" Alias "DisableThreadLibraryCalls" (ByVal hLibModule As Long) As Long

hLibModule で指定されたダイナミックリンクライブラリ(DLL)の通知 DLL_THREAD_ATTACH と DLL_THREAD_DETACH を無効にする。これにより、アプリケーションのワーキングコードセットのサイズを減らすことができる。

パラメータ
hLibModule
    通知 DLL_THREAD_ATTACH と DLL_THREAD_DETACH を無効にする、ダイナミックリンクライブラリのモジュールを指定する。

戻り値
    関数が成功すると 0 以外の値が返る。
    関数が失敗すると 0 が返る。hLibModule パラメータで指定された DLL で静的なスレッドローカル記憶域がアクティブになっている場合、ま

    たは、hLibModule パラメータに無効なモジュールハンドルが指定されている場合は、DisableThreadLibraryCalls 関数が失敗する。拡張

    エラー情報を取得するには、 関数を使う。

解説
    DisableThreadLibraryCalls 関数により、DLL で DLL_THREAD_ATTACH 通知呼び出しと DLL_THREAD_DETACH 通知呼び出し

    を無効にできる。この方法は、多くの DLL を使い、スレッドを頻繁に作成して削除するマルチスレッドアプリケーションを最適化する場合に

    便利である。また、DLL でアタッチやデタッチのスレッドレベル通知を必要としないマルチスレッドアプリケーションを最適化する場合も便利で

    ある。例としては、リモートプロシージャコール(RPC)サーバーアプリケーションなどがある。このようなアプリケーションでは、DLL の初期化

    ルーチンがメモリに残り、DLL_THREAD_ATTACH 通知と DLL_THREAD_DETACH 通知をサービスすることがよくある。通知を無効に

    すると、DLL の初期化コードはスレッドの作成や削除のためにページインされることはない。そのため、アプリケーションのワーキングコードセ

    ットを減らすことができる。最適化を実装するには、DLL の DLL_PROCESS_ATTACH コードを変更し、DisableThreadLibraryCalls を

    呼び出す。