Partilhar via


IDiaSectionContrib

Recupera dados de descrevendo uma contribuição de seção, ou seja, um bloco contíguo de memória contribuíram para a imagem por um compiland.

IDiaSectionContrib : IUnknown

Métodos na ordem de Vtable

A tabela a seguir mostra os métodos de IDiaSectionContrib.

Método

Descrição

IDiaSectionContrib::get_compiland

Recupera uma referência para o símbolo de compiland que contribuíram nesta seção.

IDiaSectionContrib::get_addressSection

Recupera a parte da seção de endereço da contribuição.

IDiaSectionContrib::get_addressOffset

Recupera a compensação parte do endereço da contribuição.

IDiaSectionContrib::get_relativeVirtualAddress

Recupera o imagem endereço virtual relativo (RVA) de contribuição.

IDiaSectionContrib::get_virtualAddress

Recupera o endereço virtual (VA) de 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 memória insuficiente.

IDiaSectionContrib::get_nopad

Recupera um sinalizador que indica se a seção não deve ser preenchida para o 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_code16bit

Recupera um sinalizador que indica se a seção contém código de 16 bits.

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 deve é removida antes que ele é 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 armazenado 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 lido.

IDiaSectionContrib::get_write

Recupera um sinalizador que indica se a seção pode ser gravada.

IDiaSectionContrib::get_dataCrc

Recupera a verificação de redundância cíclica (CRC) dos dados na seção.

IDiaSectionContrib::get_relocationsCrc

Recupera o CRC as informações de realocação da seção.

IDiaLineNumber::get_compilandId

Recupera o identificador de compiland para a seção.

Comentários

Observações para chamadores

Essa interface é obtida chamando o IDiaEnumSectionContribs::Item e IDiaEnumSectionContribs::Next métodos. Consulte o IDiaEnumSectionContribs interface para obter um exemplo de como obter o IDiaSectionContrib interface.

Exemplo

Esta função mostra o endereço de cada seção juntamente com quaisquer símbolos associados. Consulte o IDiaEnumSectionContribs interface para ver como o 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: msdia80.dll

Consulte também

Referência

IDiaEnumSectionContribs

IDiaEnumSectionContribs::Item

IDiaEnumSectionContribs::Next

Outros recursos

Interfaces (SDK de Acesso à Interface de Depuração)