O Win32 Thread Information Block (TIB) é uma estrutura de dados em Win32 no x86 que guarda informações sobre um thread em execução. essa estrutura também é conhecida como Thread Environment Block (TEB). O TIB não é oficialmente documentado para o Windows 9x. O DDK da série de Windows NT inclui a estrutura NT_TIB no ficheiro de cabeçalho winnt.h que documenta a parte independente do subsistema. O programa Wine inclui declarações para (a parte específica do subsistema de) TIB. Mas tantos programas para Win32 utilizam esses campos não documentados que são efetivamente parte da API. O primeiro campo em particular, é diretamente referenciado pelo código produzido pelo próprio compilador da Microsoft.

Acessando TIB

Pode ser acedido como offset do registo de segmento FS.

Não é habitual aceder aos campos do TIB através do endereçamento de FS:, mas sim obtendo um ponteiro de auto-referência alocado em FS:[0x18].

Exemplos em C com assembly inline para 32-bit x86:

// gcc (estilo AT&T inline assembly). void *getTIB() { void *pTib; __asm__("movl %%fs:0x18, %0" : "=r" (pTib) : : ); return pTib; }

// Microsoft C void *getTib() { void *pTib; __asm { mov EAX, FS:[0x18] mov [pTib], EAX

return pTib; }

void *getTib() { void *pTib = ( void * ) __readfsdword( 0x18 ); return pTib; }

Leitura adicional

Ligações externas TEB layout on NTinternals.net

Categoria:Interfaces de programação de aplicações da Microsoft Categoria:Programação Categoria:Arquitetura do Windows NT