IDiaSectionContrib
Ruft Daten ab, die einen Abschnittsbeitrag beschreiben, d. h. einen zusammenhängenden Speicherblock, der von einer Kompiliereinheit zum Image beigetragen wurde.
Syntax
IDiaSectionContrib : IUnknown
Methoden in Vtable-Reihenfolge
In der folgenden Tabelle sind die Methoden von IDiaSectionContrib
aufgeführt.
Methode | BESCHREIBUNG |
---|---|
IDiaSectionContrib::get_compiland | Ruft einen Verweis auf das Symbol für die Kompiliereinheit ab, die zu diesem Abschnitt beigetragen hat. |
IDiaSectionContrib::get_addressSection | Ruft den Abschnittsteil der Adresse des Beitrags ab. |
IDiaSectionContrib::get_addressOffset | Ruft den Offsetteil der Adresse des Beitrags ab. |
IDiaSectionContrib::get_relativeVirtualAddress | Ruft die virtuelle Adresse (RVA) des Beitrags relativ zum Image ab. |
IDiaSectionContrib::get_virtualAddress | Ruft die virtuelle Adresse (VA) des Beitrags ab. |
IDiaSectionContrib::get_length | Ruft die Anzahl der Bytes in einem Abschnitt ab. |
IDiaSectionContrib::get_notPaged | Ruft ein Flag ab, das angibt, dass der Abschnitt nicht aus dem Arbeitsspeicher ausgelagert werden kann. |
IDiaSectionContrib::get_nopad | Ruft ein Flag ab, das angibt, ob der Abschnitt nicht bis zur nächsten Speichergrenze aufgefüllt werden sollte. |
IDiaSectionContrib::get_code | Ruft ein Flag ab, das angibt, ob der Abschnitt ausführbaren Code enthält. |
IDiaSectionContrib::get_code16bit | Ruft ein Flag ab, das angibt, ob der Abschnitt 16-Bit-Code enthält. |
IDiaSectionContrib::get_initializedData | Ruft ein Flag ab, das angibt, ob der Abschnitt initialisierbaren Code enthält. |
IDiaSectionContrib::get_uninitializedData | Ruft ein Flag ab, das angibt, ob der Abschnitt nicht initialisierte Daten enthält. |
IDiaSectionContrib::get_informational | Ruft ein Flag ab, das angibt, ob ein Abschnitt Kommentare oder ähnliche Informationen enthält. |
IDiaSectionContrib::get_remove | Ruft ein Flag ab, das angibt, ob der Abschnitt entfernt wird, bevor er Teil des In-Memory-Images wird. |
IDiaSectionContrib::get_comdat | Ruft ein Flag ab, das angibt, ob der Abschnitt ein COMDAT-Datensatz ist. |
IDiaSectionContrib::get_discardable | Ruft ein Flag ab, das angibt, ob der Abschnitt verworfen werden kann. |
IDiaSectionContrib::get_notCached | Ruft ein Flag ab, das angibt, dass der Abschnitt nicht zwischengespeichert werden kann. |
IDiaSectionContrib::get_share | Ruft ein Flag ab, das angibt, ob der Abschnitt im Arbeitsspeicher freigegeben werden kann. |
IDiaSectionContrib::get_execute | Ruft ein Flag ab, das angibt, ob der Abschnitt als Code ausführbar ist. |
IDiaSectionContrib::get_read | Ruft ein Flag ab, das angibt, ob der Abschnitt gelesen werden kann. |
IDiaSectionContrib::get_write | Ruft ein Flag ab, das angibt, ob der Abschnitt geschrieben werden kann. |
IDiaSectionContrib::get_dataCrc | Ruft die zyklische Redundanzprüfung (CRC) der Daten im Abschnitt ab. |
IDiaSectionContrib::get_relocationsCrc | Ruft die zyklische Redundanzprüfung (CRC) der Verlagerungsinformationen im Abschnitt ab. |
IDiaLineNumber::get_compilandId | Ruft den Bezeichner der Kompiliereinheit für den Abschnitt ab. |
Bemerkungen
Hinweise für Aufrufer
Diese Schnittstelle wird durch einen Aufruf der Methoden IDiaEnumSectionContribs::Item und IDiaEnumSectionContribs::Next abgerufen. Ein Beispiel zum Abrufen der IDiaSectionContrib
-Schnittstelle finden Sie in den Informationen zur Schnittstelle IDiaEnumSectionContribs.
Beispiel
Diese Funktion zeigt die Adresse jedes Abschnitts zusammen mit allen zugeordneten Symbolen an. Sehen Sie sich die IDiaEnumSectionContribs-Schnittstelle an, um zu sehen, wie die IDiaSectionContrib
-Schnittstelle abgerufen wird.
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" );
}
}
}
}
Anforderungen
Header: Dia2.h
Bibliothek: diaguids.lib
DLL: msdia80.dll