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が未初期化なら初期化し、メモリ確保。
終了時にも前処理で、処理領域を元に戻さないとダメな感じかな ・ω・
Comments