, :
, DLL_THREAD_DETACH, .
, , TLS, , . :
case DLL_THREAD_DETACH:
lpvData = TlsGetValue(dwTlsIndex);
if (lpvData != NULL)
LocalFree((HLOCAL) lpvData);
break;
case DLL_PROCESS_DETACH:
lpvData = TlsGetValue(dwTlsIndex);
if (lpvData != NULL)
LocalFree((HLOCAL) lpvData);
TlsFree(dwTlsIndex);
break;
, DllMain entry point:
DLL - DLL, , FreeLibrary, DLL -point DLL_THREAD_DETACH . DLL DLL_PROCESS_DETACH. DLL , , DLL.
, , TLS, , , DLL_THREAD_DETACH, DLL_PROCESS_DETACH. , .
: DLL_PROCESS_DETACH, , TIB/TEB ( /) . NtQueryInformationThread() TIB/TEB, , TIB/TEB TLS-.
. Vista + - FLS ( ) TLS ( ). FlsAlloc() . FlsCallback :
, . FLS , FlsCallback , , FLS- .
FlsFree() :
FLS FLS . FLS , FLS , NULL.
Fibers:
(FLS) . , FLS , . FLS (FlsAlloc, FlsFree, FlsGetValue FlsSetValue) FLS, . , FLS .