次のような、TIB で動作する Win32 API 関数の実装を掘り下げます。
- TLS アクセス機能:
TlsAlloc、TlsFree、TlsSetValue、TlsGetValue GetLastError、SetLastError- メッセージング サブシステム:
GetMessageなどPeekMessage。
fs:[0x18]セレクターの内容を読み取ることによって、それらすべてが TIB (TEB と呼ばれることもあります) にアクセスすることがわかります。
OTOH fsregisterが直接指しているので、これは不要です。この記事と私が実際に見たものによると、registerfsは TIB 構造の先頭へのアドレスを保持しますが、オフセット 0x18 にはそれ自体へのポインターがあります。
それにもかかわらず、TIB に間接的にアクセスする理由は何でしょうか?