Partager via


IDiaSectionContrib

Récupère des données décrivant une contribution de section, c’est-à-dire un bloc de mémoire contigu qui a contribué à l’image par un compiland.

Syntaxe

IDiaSectionContrib : IUnknown

Méthodes dans l'ordre Vtable

Le tableau suivant présente les méthodes de IDiaSectionContrib.

Méthode Description
IDiaSectionContrib::get_compiland Récupère une référence au symbole compiland qui a contribué à cette section.
IDiaSectionContrib::get_addressSection Récupère la partie section de l’adresse de la contribution.
IDiaSectionContrib::get_addressOffset Récupère la partie décalage de l’adresse de la contribution.
IDiaSectionContrib::get_relativeVirtualAddress Récupère l’adresse virtuelle relative (RVA) d’image de la contribution.
IDiaSectionContrib::get_virtualAddress Récupère l’adresse virtuelle (VA) de la contribution.
IDiaSectionContrib::get_length Récupère le nombre d’octets dans une section.
IDiaSectionContrib::get_notPaged Récupère un indicateur qui signale si la section ne peut pas être paginée en mémoire insuffisante.
IDiaSectionContrib::get_nopad Récupère un indicateur indiquant si la section ne doit pas être remplie jusqu’à la limite de mémoire suivante.
IDiaSectionContrib::get_code Récupère un indicateur qui signale si la section contient du code exécutable.
IDiaSectionContrib::get_initializedData Récupère un indicateur qui signale si la section contient des données initialisées.
IDiaSectionContrib::get_uninitializedData Récupère un indicateur spécifiant si la section contient des données non initialisées.
IDiaSectionContrib::get_informational Récupère un indicateur spécifiant si une section contient des commentaires ou des informations similaires.
IDiaSectionContrib::get_remove Récupère un indicateur qui indique si la section est supprimée avant de faire partie de l’image en mémoire.
IDiaSectionContrib::get_comdat Récupère un indicateur qui indique si la section est un enregistrement COMDAT.
IDiaSectionContrib::get_discardable Récupère un indicateur qui indique si la section peut être ignorée.
IDiaSectionContrib::get_notCached Récupère un indicateur qui indique si la section ne peut pas être mise en cache.
IDiaSectionContrib::get_share Récupère un indicateur qui indique si la section peut être partagée en mémoire.
IDiaSectionContrib::get_execute Récupère un indicateur qui signale si la section est exécutable comme code.
IDiaSectionContrib::get_read Récupère un indicateur spécifiant si la section peut être lue.
IDiaSectionContrib::get_write Récupère un indicateur spécifiant si la section peut être écrite.
IDiaSectionContrib::get_dataCrc Récupère la vérification de redondance cyclique (CRC) des données de la section.
IDiaSectionContrib::get_relocationsCrc Récupère le CRC des informations de déplacement pour la section.
IDiaSectionContrib::get_compilandId Récupère l’identificateur de compiland de la section.
IDiaSectionContrib::get_code16bit Récupère un indicateur spécifiant si la section contient du code 16 bits.

Notes

Remarques pour les appelants

Cette interface est obtenue en appelant les méthodes et IDiaEnumSectionContribs::Next les IDiaEnumSectionContribs::Item méthodes. Consultez l’interface IDiaEnumSectionContribs pour obtenir un exemple d’obtention de l’interface IDiaSectionContrib .

Exemple

Cette fonction affiche l’adresse de chaque section ainsi que tous les symboles associés. Consultez l’interface IDiaEnumSectionContribs pour voir comment l’interface IDiaSectionContrib est obtenue.

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

Spécifications

En-tête : Dia2.h

Bibliothèque : diaguids.lib

DLL : msdia140.dll

Voir aussi