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_code16bit Recupera un flag che indica se la sezione contiene codice a 16 bit.
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 .
IDiaLineNumber::get_compilandId Recupera l'identificatore compiland per la sezione .

Osservazioni:

Note per i chiamanti

Questa interfaccia viene ottenuta chiamando i metodi IDiaEnumSectionContribs::Item e IDiaEnumSectionContribs::Next . Per un esempio di recupero dell'interfacciaIDiaSectionContrib, vedere l'interfaccia IDiaEnumSectionContribs.

Esempio

Questa funzione mostra l'indirizzo di ogni sezione insieme ai simboli associati. Per vedere come viene ottenuta l'interfaccia IDiaEnumSectionContribs, vedere l'interfaccia IDiaSectionContrib IDiaEnumSectionContribs.

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: msdia80.dll

Vedi anche