Condividi tramite


IDiaSectionContrib

Recupera i dati che descrivono un contributo di sezione, ovvero un blocco contiguo di memoria contribuito all'immagine da un compiland.

Sintassi

IDiaSectionContrib : IUnknown

Metodi nell'ordine Vtable

Nella tabella seguente vengono illustrati i metodi di IDiaSectionContrib.

metodo Descrizione
IDiaSectionContrib::get_compiland Recupera un riferimento al simbolo compiland che ha contribuito a questa sezione.
IDiaSectionContrib::get_addressSection Recupera la parte della sezione dell'indirizzo del contributo.
IDiaSectionContrib::get_addressOffset Recupera la parte offset dell'indirizzo del contributo.
IDiaSectionContrib::get_relativeVirtualAddress Recupera l'indirizzo virtuale relativo dell'immagine del contributo.
IDiaSectionContrib::get_virtualAddress Recupera l'indirizzo virtuale (VA) del contributo.
IDiaSectionContrib::get_length Recupera il numero di byte in una sezione.
IDiaSectionContrib::get_notPaged Recupera un flag che indica se la sezione non può essere disastrata dalla memoria.
IDiaSectionContrib::get_nopad Recupera un flag che indica se la sezione non deve essere riempita al limite di memoria successivo.
IDiaSectionContrib::get_code Recupera un flag che indica se la sezione contiene codice eseguibile.
IDiaSectionContrib::get_initializedData Recupera un flag che indica se la sezione contiene dati inizializzati.
IDiaSectionContrib::get_uninitializedData Recupera un flag che indica se la sezione contiene dati non inizializzati.
IDiaSectionContrib::get_informational Recupera un flag che indica se una sezione contiene commenti o informazioni simili.
IDiaSectionContrib::get_remove Recupera un flag che indica se la sezione viene rimossa prima che venga creata parte dell'immagine in memoria.
IDiaSectionContrib::get_comdat Recupera un flag che indica se la sezione è un record COMDAT.
IDiaSectionContrib::get_discardable Recupera un flag che indica se la sezione può essere rimossa.
IDiaSectionContrib::get_notCached Recupera un flag che indica se la sezione non può essere memorizzata nella cache.
IDiaSectionContrib::get_share Recupera un flag che indica se la sezione può essere condivisa in memoria.
IDiaSectionContrib::get_execute Recupera un flag che indica se la sezione è eseguibile come codice.
IDiaSectionContrib::get_read Recupera un flag che indica se la sezione può essere letta.
IDiaSectionContrib::get_write Recupera un flag che indica se la sezione può essere scritta.
IDiaSectionContrib::get_dataCrc Recupera il controllo della ridondanza ciclico (CRC) dei dati nella sezione .
IDiaSectionContrib::get_relocationsCrc Recupera il CRC delle informazioni di rilocazione per la sezione .
IDiaSectionContrib::get_compilandId Recupera l'identificatore compiland per la sezione .
IDiaSectionContrib::get_code16bit Recupera un flag che indica se la sezione contiene codice a 16 bit.

Osservazioni:

Note per i chiamanti

Questa interfaccia viene ottenuta chiamando i IDiaEnumSectionContribs::Item metodi e IDiaEnumSectionContribs::Next . Vedere l'interfaccia IDiaEnumSectionContribs per un esempio di recupero dell'interfaccia IDiaSectionContrib .

Esempio

Questa funzione mostra l'indirizzo di ogni sezione insieme ai simboli associati. Vedere l'interfaccia IDiaEnumSectionContribs per vedere come viene ottenuta l'interfaccia 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" );
            }
        }
    }
}

Requisiti

Intestazione: Dia2.h

Libreria: diaguids.lib

DLL: msdia140.dll

Vedi anche