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