IDiaSegment
Wird von Daten aus der Nummer des Abschnitts in Segmenten des Adressbereichs.
IDiaSegment : IUnknown
Methoden in die Vtable-Reihenfolge
In der folgenden Tabelle werden die Methoden von IDiaSegmentan.
Methode |
Beschreibung |
---|---|
Ruft die Segmentnummer ab. |
|
Ruft den Offset in Segmenten ab, in dem der Bereich beginnt. |
|
Ruft die Anzahl von Bytes im Segment ab. |
|
Ruft ein Flag ab, das angibt, ob das Segment gelesen werden kann. |
|
Ruft ein Flag ab, das angibt, ob das Segment geändert werden kann. |
|
Ruft ein Flag ab, das angibt, ob das Segment ausführbar ist. |
|
Ruft die Nummer des Abschnitts ab, die diesem Segment zuordnet. |
|
Ruft die relative virtuelle Adresse (RVA) vom Anfang des Abschnitts ab. |
|
Ruft die virtuelle Adresse (VA) vom Anfang des Abschnitts ab. |
Hinweise
Da das DIA SDK bereits ausgeführt wird, Übersetzungen im Abschnitt zu den relativen virtuellen Adressen, die meisten Anwendungen verwenden nicht die Informationen in der Segment aus zugeordnet.
Hinweise für Aufrufer
Rufen Sie diese Schnittstelle, indem sie die IDiaEnumSegments::Item oder IDiaEnumSegments::Next-Methoden aufgerufen werden.Weitere Informationen finden Sie im Beispiel für Details.
Beispiel
Diese Funktion wird die Adresse aller Segmente in einer Tabelle und im nächsten Symbol an.
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 ] );
}
}
}
}
}
Anforderungen
Header: Dia2.h
Bibliothek: diaguids.lib
DLLs: msdia80.dll