Aracılığıyla paylaş


IDiaSectionContrib

Bölüm katkısını açıklayan, yani bir compiland tarafından görüntüye katkıda bulunan bitişik bir bellek bloğunu açıklayan verileri alır.

Sözdizimi

IDiaSectionContrib : IUnknown

Vtable Sırasına Göre Yöntemler

Aşağıdaki tabloda yönteminin yöntemleri gösterilmektedir IDiaSectionContrib.

Metot Açıklama
IDiaSectionContrib::get_compiland Bu bölüme katkıda bulunan compiland simgesine bir başvuru alır.
IDiaSectionContrib::get_addressSection Katkı adresinin bölüm bölümünü alır.
IDiaSectionContrib::get_addressOffset Katkı adresinin uzaklık bölümünü alır.
IDiaSectionContrib::get_relativeVirtualAddress Katkının görüntü göreli sanal adresini (RVA) alır.
IDiaSectionContrib::get_virtualAddress Katkının sanal adresini (VA) alır.
IDiaSectionContrib::get_length Bir bölümdeki bayt sayısını alır.
IDiaSectionContrib::get_notPaged Bölümün bellek dışında disk belleğine alınıp alınamayacağını belirten bir bayrak alır.
IDiaSectionContrib::get_nopad Bölümün sonraki bellek sınırına doldurulmaması gerektiğini belirten bir bayrak alır.
IDiaSectionContrib::get_code Bölümün yürütülebilir kod içerip içermediğini gösteren bir bayrak alır.
IDiaSectionContrib::get_initializedData Bölümün başlatılan veriler içerip içermediğini gösteren bir bayrak alır.
IDiaSectionContrib::get_uninitializedData Bölümün başlatılmamış veriler içerip içermediğini gösteren bir bayrak alır.
IDiaSectionContrib::get_informational Bölümün açıklamalar mı yoksa benzer bilgiler mi içerdiğini belirten bir bayrak alır.
IDiaSectionContrib::get_remove Bölümün bellek içi görüntünün bir parçası yapılmadan önce kaldırılıp kaldırılmadığını gösteren bir bayrak alır.
IDiaSectionContrib::get_comdat Bölümün bir COMDAT kaydı olup olmadığını gösteren bir bayrak alır.
IDiaSectionContrib::get_discardable Bölümün atılıp atılamayacağını gösteren bir bayrak alır.
IDiaSectionContrib::get_notCached Bölümün önbelleğe alınıp alınamayacağını belirten bir bayrak alır.
IDiaSectionContrib::get_share Bölümün bellekte paylaşılıp paylaşılamayacağını gösteren bir bayrak alır.
IDiaSectionContrib::get_execute Bölümün kod olarak yürütülebilir olup olmadığını gösteren bir bayrak alır.
IDiaSectionContrib::get_read Bölümün okunup okunamayacağını gösteren bir bayrak alır.
IDiaSectionContrib::get_write Bölümün yazılıp yazılamayacağını gösteren bir bayrak alır.
IDiaSectionContrib::get_dataCrc bölümündeki verilerin döngüsel yedeklilik denetimini (CRC) alır.
IDiaSectionContrib::get_relocationsCrc Bölümün yeniden konumlandırma bilgilerinin CRC'sini alır.
IDiaSectionContrib::get_compilandId Bölümün compiland tanımlayıcısını alır.
IDiaSectionContrib::get_code16bit Bölümün 16 bit kod içerip içermediğini gösteren bir bayrak alır.

Açıklamalar

Arayanlar İçin Notlar

Bu arabirim ve IDiaEnumSectionContribs::Next yöntemleri çağrılarak IDiaEnumSectionContribs::Item elde edilir. IDiaEnumSectionContribs Arabirimi elde etme örneği için arabirimine IDiaSectionContrib bakın.

Örnek

Bu işlev, ilişkili sembollerle birlikte her bölümün adresini gösterir. Arabirimin IDiaEnumSectionContribs nasıl alındiğini görmek için arabirimine IDiaSectionContrib bakın.

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

Gereksinimler

Üst bilgi: Dia2.h

Kitaplık: diaguids.lib

DLL: msdia140.dll

Ayrıca bkz.