IMAGE_TLS_DIRECTORY
TLS技术
线程局部存储技术(Thread Local Storage, TLS),解决了多个线程访问同一变量的冲突问题。
块结构
内容 | 大小 | 偏移 | 说明 |
---|---|---|---|
StartAddressOfRawData | dd | 0000h | TSL 模板的起始地址 |
EndAddressOfRawData | dd | 0004h | TLS 模板的结束地址 |
AddressOfIndex | dd | 0008h | TLS 索引的位置 |
AddressOfCallBacks | dd | 000ch | TLS 回调函数数组指针 |
SizeOfZeroFill | dd | 0010h | 填充0的个数 |
Characteristics | dd | 0014h | 保留 |
StartAddressOfRawData
双字。表示TLS模板的起始地址。用于对TLS数据进行初始化。每当创建线程时,系统都要复制所有这些数据。
EndAddressOfRawData
双字。表示TLS模板的结束地址。
AddressOfIndex
双字。用于保存TLS索引的位置,索引的具体值由加载器确定。这个位置在普通的数据节中,因此,可以给它取一个容易理解的符号名,便于在程序中访问。
AddressOfCallBacks
双字。这是一个指针,指向由TLS回调函数1组成的数组。这个数组是以NULL结尾的,因此,有回调函数的话,这个字段指向的位置处应该是4个字节的0.
SizeOfZeroFill
双字。TLS模板的大小应该与映像文件中的TLS数据的大小一致。用0填充的数据就是已初始化的非零数据后面的那些数据。
Characteristics
双字。保留未用。
什么东西,不知道↩