Win32 Thread Information Block
- Artigo
- Discussão
Ferramentas
Geral
Imprimir/exportar
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).[1]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.[1]
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:[0], 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 Cvoid *getTib(){ void *pTib; __asm { mov EAX, FS:[0x18] mov [pTib], EAX } return pTib;}
void *getTib(){ void *pTib = ( void * ) __readfsdword( 0x18 ); return pTib;}
![]() | Este artigo sobre o Microsoft Windows é um esboço. Você pode ajudar a Wikipédia expandindo-o. |