TLS コールバックの不思議メモ

TLSコールバックを使用したときに分かったこと色々

・TLSコールバック中の 最初のDLL_PROCESS_ATTACHでは、標準ファイル入出力も、ファイル入出力も使えない。未初期化でクラッシュする

・TLSコールバックのDLL_PROCESS_ATTACHは WinMain より早く呼ばれる。

・TLSコールバックでWindows 2000は独自にTLSを使用してるので、勝手に使うとアプリ終了時にクラッシュする。

・WOW32Reservedは 16bitアプリ起動時に使われるだけではなく、64bit OSで 32bitアプリを起動しているときにも使われる。

・Tlsindexには Tlsの Index が入ってるとは限らず、DLL_THREAD_ATTACHを処理すると0の事が多い。
Thread Local Storage, part 4: Accessing __declspec(thread) data ≪ Nynaeve
調べたらこんな記事があった

・TlsIndex の最大値は64だけど、追加で1024の拡張TLSが使用できるらしい

Thread Local Storage (TLS). In the previous blog, we got to know… | by Manish Kumar | Medium
参考になりそうなところ

つまり、Windows 2000でTLSを NT6.x風に管理しようと思ったら、
WinMainの前に処理を奪って、TLSが未初期化なら初期化し、メモリ確保。
終了時にも前処理で、処理領域を元に戻さないとダメな感じかな ・ω・

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です