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

Weitere Informationen