Udostępnij za pośrednictwem


IDiaSectionContrib

Pobiera dane opisujące wkład sekcji, to znaczy ciągłego bloku pamięci stanowiony obrazu przez compiland.

IDiaSectionContrib : IUnknown

Metody w kolejności Vtable

W poniższej tabeli przedstawiono metody IDiaSectionContrib.

Metoda

Opis

IDiaSectionContrib::get_compiland

Pobiera odwołanie do symbolu compiland, która przyczyniła się w tej sekcji.

IDiaSectionContrib::get_addressSection

Pobiera część sekcji adresu wkładu.

IDiaSectionContrib::get_addressOffset

Pobiera przesunięcia część wkładu adresu.

IDiaSectionContrib::get_relativeVirtualAddress

Pobiera obraz wirtualny adres względny (RVA) wkładu.

IDiaSectionContrib::get_virtualAddress

Pobiera adres wirtualny (VA) wkładu.

IDiaSectionContrib::get_length

Pobiera liczbę bajtów w sekcji.

IDiaSectionContrib::get_notPaged

Pobiera flagę wskazującą, czy sekcja nie stronicowanej pamięci.

IDiaSectionContrib::get_nopad

Pobiera flagę wskazującą, czy nie są wyściełane sekcji do następnego granicy pamięci.

IDiaSectionContrib::get_code

Pobiera flagę wskazującą, czy sekcja zawiera kod wykonywalny.

IDiaSectionContrib::get_code16bit

Pobiera flagę wskazującą, czy sekcja zawiera 16-bitowego kodu.

IDiaSectionContrib::get_initializedData

Pobiera flagę wskazującą, czy sekcja zawiera zainicjowane dane.

IDiaSectionContrib::get_uninitializedData

Pobiera flagę wskazującą, czy sekcja zawiera niezainicjowanych danych.

IDiaSectionContrib::get_informational

Pobiera flagę wskazującą, czy sekcja zawiera komentarze lub podobne informacje.

IDiaSectionContrib::get_remove

Pobiera flagę wskazującą, czy sekcja jest usuwany przed dokonaniem części obrazu w pamięci.

IDiaSectionContrib::get_comdat

Pobiera flagę wskazującą, czy sekcja jest rekordu COMDAT.

IDiaSectionContrib::get_discardable

Pobiera flagę wskazującą, czy sekcja można odrzucone.

IDiaSectionContrib::get_notCached

Pobiera flagę wskazującą, czy sekcja nie może być buforowane.

IDiaSectionContrib::get_share

Pobiera flagę wskazującą, czy sekcja może być współużytkowany w pamięci.

IDiaSectionContrib::get_execute

Pobiera flagę wskazującą, czy sekcja jest wykonywalny jako kod.

IDiaSectionContrib::get_read

Pobiera flagę wskazującą, czy można przeczytać sekcję.

IDiaSectionContrib::get_write

Pobiera flagę wskazującą, czy sekcja może być zapisany.

IDiaSectionContrib::get_dataCrc

Pobiera wyboru cyklicznej kontroli redundancji (CRC) w sekcji danych.

IDiaSectionContrib::get_relocationsCrc

Pobiera CRC informacji przeniesienie dla sekcji.

IDiaLineNumber::get_compilandId

Pobiera identyfikator compiland dla sekcji.

Uwagi

Uwagi do wywoływania

Ten interfejs jest uzyskiwany przez wywołanie IDiaEnumSectionContribs::Item i IDiaEnumSectionContribs::Next metody.Zobacz IDiaEnumSectionContribs interfejsu, na przykład uzyskania IDiaSectionContrib interfejsu.

Przykład

Funkcja ta pokazuje adres każdej sekcji wraz z dowolnym skojarzone z nimi symbole.Zobacz IDiaEnumSectionContribs interfejsu, aby zobaczyć jak IDiaSectionContrib uzyskuje się interfejs.

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" );
            }
        }
    }
}

Wymagania

Nagłówek: Dia2.h

Biblioteki: diaguids.lib

Biblioteka DLL: msdia80.dll

Zobacz też

Informacje

IDiaEnumSectionContribs

IDiaEnumSectionContribs::Item

IDiaEnumSectionContribs::Next

Inne zasoby

Interfejsy (dostęp do interfejsu SDK debugowanie)