IDiaSegment
Données de mappage du nombre de section aux segments de l'espace d'adressage.
IDiaSegment : IUnknown
méthodes en commande de Vtable
Le tableau suivant répertorie les méthodes d' IDiaSegment.
Méthode |
Description |
---|---|
Récupère le numéro du segment. |
|
Récupère l'offset dans les segments où la section démarre. |
|
Récupère le nombre d'octets dans le segment. |
|
extrait une balise qui indique si le segment peut être lu. |
|
extrait une balise qui indique si le segment peut être modifié. |
|
extrait une balise qui indique si le segment est exécutable. |
|
Récupère le numéro de section mappée à ce segment. |
|
Récupère l'adresse virtuelle relative (RVA) du début de la section. |
|
Récupère l'adresse (VA) virtuelle de début de la section. |
Notes
Étant donné que le diamètre Kit de développement logiciel exécute déjà les traductions de la section décalés à des adresses virtuelles relatives, la plupart des applications ne se serviront pas des informations dans le mappage de segment.
Remarques pour les appelants
obtenez cette interface en appelant les méthodes d' IDiaEnumSegments::Item ou d' IDiaEnumSegments::Next . Consultez l'exemple pour plus de détails.
Exemple
cette fonction affiche l'adresse de tous les segments dans un tableau et le symbole le plus proche.
void ShowSegments(IDiaTable *pTable, IDiaSession *pSession)
{
CComPtr<IDiaEnumSegments> pSegments;
if ( SUCCEEDED( pTable->QueryInterface(
_uuidof( IDiaEnumSegments ),
(void**)&pSegments )
)
)
{
CComPtr<IDiaSegment> pSegment;
while ( SUCCEEDED( hr = pSegments->Next( 1, &pSegment, &celt ) ) &&
celt == 1 )
{
DWORD rva;
DWORD seg;
pSegment->get_addressSection( &seg );
if ( pSegment->get_relativeVirtualAddress( &rva ) == S_OK )
{
printf( "Segment %i addr: 0x%.8X\n", seg, rva );
pSegment = 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( "\tClosest symbol: %ws (%ws)\n",
name != NULL ? name : L"",
szTags[ tag ] );
}
}
}
}
}
Configuration requise
en-tête : Dia2.h
bibliothèque : diaguids.lib
DLL : msdia80.dll
Voir aussi
Référence
Autres ressources
Interfaces (Kit de développement logiciel de Debug Interface Access)