IDiaSectionContrib

Pobiera dane opisujące współtworzenie sekcji, czyli ciągły blok pamięci, który przyczynił się do obrazu przez compiland.

Składnia

IDiaSectionContrib : IUnknown

Metody w tabeli Vtable Order

W poniższej tabeli przedstawiono metody .IDiaSectionContrib

Metoda opis
IDiaSectionContrib::get_compiland Pobiera odwołanie do symbolu compiland, który przyczynił się do tej sekcji.
IDiaSectionContrib::get_addressSection Pobiera część sekcji adresu współtworzenia.
IDiaSectionContrib::get_addressOffset Pobiera część przesunięcia adresu współtworzenia.
IDiaSectionContrib::get_relativeVirtualAddress Pobiera względny adres wirtualny obrazu (RVA) udziału.
IDiaSectionContrib::get_virtualAddress Pobiera adres wirtualny (VA) udziału.
IDiaSectionContrib::get_length Pobiera liczbę bajtów w sekcji.
IDiaSectionContrib::get_notPaged Pobiera flagę wskazującą, czy nie można odstronicować sekcji z pamięci.
IDiaSectionContrib::get_nopad Pobiera flagę wskazującą, czy sekcja nie powinna być dopełniona do następnej 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-bitowy kod.
IDiaSectionContrib::get_initializedData Pobiera flagę wskazującą, czy sekcja zawiera zainicjowane dane.
IDiaSectionContrib::get_uninitializedData Pobiera flagę wskazującą, czy sekcja zawiera niezainicjowane dane.
IDiaSectionContrib::get_informational Pobiera flagę wskazującą, czy sekcja zawiera komentarze, czy podobne informacje.
IDiaSectionContrib::get_remove Pobiera flagę wskazującą, czy sekcja została usunięta, zanim zostanie wykonana jako część obrazu w pamięci.
IDiaSectionContrib::get_comdat Pobiera flagę wskazującą, czy sekcja jest rekordem COMDAT.
IDiaSectionContrib::get_discardable Pobiera flagę wskazującą, czy sekcja może zostać odrzucona.
IDiaSectionContrib::get_notCached Pobiera flagę wskazującą, czy nie można buforować sekcji.
IDiaSectionContrib::get_share Pobiera flagę wskazującą, czy sekcja może być współdzielona w pamięci.
IDiaSectionContrib::get_execute Pobiera flagę wskazującą, czy sekcja jest wykonywalna jako kod.
IDiaSectionContrib::get_read Pobiera flagę wskazującą, czy można odczytać sekcję.
IDiaSectionContrib::get_write Pobiera flagę wskazującą, czy można napisać sekcję.
IDiaSectionContrib::get_dataCrc Pobiera cykliczne sprawdzanie nadmiarowości (CRC) danych w sekcji .
IDiaSectionContrib::get_relocationsCrc Pobiera CRC informacji o relokacji dla sekcji.
IDiaLineNumber::get_compilandId Pobiera identyfikator compiland dla sekcji.

Uwagi

Uwagi dotyczące wywoływania

Ten interfejs jest uzyskiwany przez wywołanie metod IDiaEnumSectionContribs::Item i IDiaEnumSectionContribs::Next . Zobacz interfejs IDiaEnumSectionContribs, aby zapoznać się z przykładem uzyskania interfejsuIDiaSectionContrib.

Przykład

Ta funkcja pokazuje adres każdej sekcji wraz z skojarzonymi symbolami. Zobacz interfejs IDiaEnumSectionContribs, aby zobaczyć, jak IDiaSectionContrib interfejs jest uzyskiwany.

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

Biblioteka: diaguids.lib

BIBLIOTEKA DLL: msdia80.dll

Zobacz też