IDiaSectionContrib

Recupera datos que describen una contribución de sección, es decir, un bloque contiguo de memoria aportado a la imagen por un compilado.

Sintaxis

IDiaSectionContrib : IUnknown

Métodos en orden de Vtable

En la tabla siguiente se muestran los métodos de IDiaSectionContrib.

Método Descripción
IDiaSectionContrib::get_compiland Recupera una referencia al símbolo compilado que ha contribuido a esta sección.
IDiaSectionContrib::get_addressSection Recupera el elemento de sección con la dirección de la contribución.
IDiaSectionContrib::get_addressOffset Recupera el elemento de desplazamiento con la dirección de la contribución.
IDiaSectionContrib::get_relativeVirtualAddress Recupera la dirección virtual relativa (RVA) de imagen de la contribución.
IDiaSectionContrib::get_virtualAddress Recupera la dirección virtual (VA) de la contribución.
IDiaSectionContrib::get_length Recupera el número de bytes de una sección.
IDiaSectionContrib::get_notPaged Recupera una marca que indica si la sección no se puede paginar fuera de la memoria.
IDiaSectionContrib::get_nopad Recupera una marca que indica si la sección no se debe rellenar en el límite de memoria siguiente.
IDiaSectionContrib::get_code Recupera una marca que indica si la sección contiene código ejecutable.
IDiaSectionContrib::get_code16bit Recupera una marca que indica si la sección contiene código de 16 bits.
IDiaSectionContrib::get_initializedData Recupera una marca que indica si la sección contiene datos inicializados.
IDiaSectionContrib::get_uninitializedData Recupera una marca que indica si la sección contiene datos sin inicializar.
IDiaSectionContrib::get_informational Recupera una marca que indica si una sección contiene comentarios o información similar.
IDiaSectionContrib::get_remove Recupera una marca que indica si la sección se quita antes de formar parte de la imagen en memoria.
IDiaSectionContrib::get_comdat Recupera una marca que indica si la sección contiene un registro COMDAT.
IDiaSectionContrib::get_discardable Recupera una marca que indica si la sección se puede descartar.
IDiaSectionContrib::get_notCached Recupera una marca que indica si la sección no se puede almacenar en caché.
IDiaSectionContrib::get_share Recupera una marca que indica si la sección se puede compartir en memoria.
IDiaSectionContrib::get_execute Recupera una marca que indica si la sección se puede ejecutar como código.
IDiaSectionContrib::get_read Recupera una marca que indica si la sección se puede leer.
IDiaSectionContrib::get_write Recupera una marca que indica si la sección se puede escribir.
IDiaSectionContrib::get_dataCrc Recupera la prueba cíclica de redundancia (CRC) de los datos de la sección.
IDiaSectionContrib::get_relocationsCrc Recupera la CRC de la información de reubicación de la sección.
IDiaLineNumber::get_compilandId Recupera el identificador del compilando de la sección.

Observaciones

Notas para autores de la llamada

Esta interfaz se obtiene llamando a los métodos IDiaEnumSectionContribs::Item y IDiaEnumSectionContribs::Next. Consulte la interfaz IDiaEnumSectionContribs para obtener un ejemplo de obtención de la interfaz IDiaSectionContrib.

Ejemplo

Esta función muestra la dirección de cada sección junto con los símbolos asociados. Consulte la interfaz IDiaEnumSectionContribs para ver cómo se obtiene la interfaz IDiaSectionContrib.

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

Encabezado: Dia2.h

Biblioteca: diaguids.lib

DLL: msdia80.dll

Vea también