【发布时间】:2012-04-15 09:26:51
【问题描述】:
深入了解使用 TIB 的 Win32 API 函数的实现,例如:
- TLS访问函数:
TlsAlloc、TlsFree、TlsSetValue、TlsGetValue -
GetLastError,SetLastError - 消息子系统:
GetMessage、PeekMessage等
通过读取fs:[0x18] 选择器的内容发现他们都访问了TIB(有时称为TEB)。
OTOH 这是不必要的,因为fs 注册直接指向它。根据this article 和我在实践中看到的情况,fs 寄存器保存了 TIB 结构开头的地址,而在偏移量 0x18 处它有指向自身的指针。
间接访问 TIB 的原因是什么?
【问题讨论】:
标签: c windows winapi x86 memory-segmentation