IDiaSectionContrib
Recupera dados que descrevem uma contribuição de seção, ou seja, um bloco contíguo de memória contribuído para a imagem por um compilador.
Sintaxe
IDiaSectionContrib : IUnknown
Métodos na ordem VTable
A tabela a seguir mostra os métodos de IDiaSectionContrib
.
Método | Descrição |
---|---|
IDiaSectionContrib::get_compiland |
Recupera uma referência ao símbolo do compiland que contribuiu com esta seção. |
IDiaSectionContrib::get_addressSection |
Recupera a parte da seção do endereço da contribuição. |
IDiaSectionContrib::get_addressOffset |
Recupera a parte deslocada do endereço da contribuição. |
IDiaSectionContrib::get_relativeVirtualAddress |
Recupera o RVA (endereço virtual relativo) da imagem da contribuição. |
IDiaSectionContrib::get_virtualAddress |
Recupera o VA (endereço virtual) da contribuição. |
IDiaSectionContrib::get_length |
Recupera o número de bytes em uma seção. |
IDiaSectionContrib::get_notPaged |
Recupera um sinalizador que indica se a seção não pode ser paginada fora da memória. |
IDiaSectionContrib::get_nopad |
Recupera um sinalizador que indica se a seção não deve ser preenchida ao próximo limite de memória. |
IDiaSectionContrib::get_code |
Recupera um sinalizador que indica se a seção contém código executável. |
IDiaSectionContrib::get_initializedData |
Recupera um sinalizador que indica se a seção contém dados inicializados. |
IDiaSectionContrib::get_uninitializedData |
Recupera um sinalizador que indica se a seção contém dados não inicializados. |
IDiaSectionContrib::get_informational |
Recupera um sinalizador que indica se uma seção contém comentários ou informações semelhantes. |
IDiaSectionContrib::get_remove |
Recupera um sinalizador que indica se a seção é removida antes de fazer parte da imagem na memória. |
IDiaSectionContrib::get_comdat |
Recupera um sinalizador que indica se a seção é um registro COMDAT. |
IDiaSectionContrib::get_discardable |
Recupera um sinalizador que indica se a seção pode ser descartada. |
IDiaSectionContrib::get_notCached |
Recupera um sinalizador que indica se a seção não pode ser armazenada em cache. |
IDiaSectionContrib::get_share |
Recupera um sinalizador que indica se a seção pode ser compartilhada na memória. |
IDiaSectionContrib::get_execute |
Recupera um sinalizador que indica se a seção é executável como código. |
IDiaSectionContrib::get_read |
Recupera um sinalizador que indica se a seção pode ser lida. |
IDiaSectionContrib::get_write |
Recupera um sinalizador que indica se a seção pode ser gravada. |
IDiaSectionContrib::get_dataCrc |
Recupera a CRC (verificação de redundância cíclica) dos dados na seção. |
IDiaSectionContrib::get_relocationsCrc |
Retorna a CRC das informações de realocação da seção. |
IDiaSectionContrib::get_compilandId |
Recupera o identificador do compiland da seção. |
IDiaSectionContrib::get_code16bit |
Recupera um sinalizador que indica se a seção contém código de 16 bits.l. |
Comentários
Observações para chamadores
Essa interface é obtida chamando os IDiaEnumSectionContribs::Item
métodos and IDiaEnumSectionContribs::Next
. Consulte a IDiaEnumSectionContribs
interface para obter um exemplo de como obter a IDiaSectionContrib
interface.
Exemplo
Essa função mostra o endereço de cada seção junto com todos os símbolos associados. Consulte a IDiaEnumSectionContribs
interface para ver como a IDiaSectionContrib
interface é obtida.
void PrintSectionContrib(IDiaSectionContrib* pSecContrib, IDiaSession* pSession)
{
if (pSecContrib != NULL && pSession != NULL)
{
DWORD rva;
if ( pSecContrib->get_relativeVirtualAddress( &rva ) == S_OK )
{
printf( "\taddr: 0x%.8X", rva );
pSecContrib = NULL;
CComPtr<IDiaSymbol> pSym;
if ( psession->findSymbolByRVA( rva, SymTagNull, &pSym ) == S_OK )
{
CDiaBSTR name;
DWORD tag;
pSym->get_symTag( &tag );
pSym->get_name( &name );
printf( " symbol: %ws (%ws)\n",
name != NULL ? name : L"",
szTags[ tag ] );
}
else
{
printf( "<no symbol found?>\n" );
}
}
else
{
DWORD isect;
DWORD offset;
pSecContrib->get_addressSection( &isect );
pSecContrib->get_addressOffset( &offset );
printf( "\taddr: 0x%.4X:0x%.8X", isect, offset );
pSecContrib = NULL;
CComPtr<IDiaSymbol> pSym;
if ( SUCCEEDED( psession->findSymbolByAddr(
isect,
offset,
SymTagNull,
&pSym )
)
)
{
CDiaBSTR name;
DWORD tag;
pSym->get_symTag( &tag );
pSym->get_name( &name );
printf( " symbol: %ws (%ws)\n",
name != NULL ? name : L"",
szTags[ tag ] );
}
else
{
printf( "<no symbol found?>\n" );
}
}
}
}
Requisitos
Cabeçalho: Dia2.h
Biblioteca: diaguids.lib
DLL: msdia140.dll