Freigeben über


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 Kompiliereinheitssymbol ab, das diesen 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 anzeigt, ob der Abschnitt ausführbaren Code enthält.
IDiaSectionContrib::get_initializedData Hiermit wird ein Flag abgerufen, das angibt, ob der Abschnitt initialisierbare Daten 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 anzeigt, ob der Abschnitt entfernt wird, bevor er Teil des In-Memory-Images wird.
IDiaSectionContrib::get_comdat Ruft ein Flag ab, das anzeigt, 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 anzeigt, 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.
IDiaSectionContrib::get_compilandId Ruft den Bezeichner der Kompiliereinheit für den Abschnitt ab.
IDiaSectionContrib::get_code16bit Ruft ein Flag ab, das angibt, ob der Abschnitt 16-Bit-Code enthält.

Hinweise

Hinweise für Aufrufer

Diese Schnittstelle wird durch Aufrufen der IDiaEnumSectionContribs::Item Methoden abgerufen IDiaEnumSectionContribs::Next . Ein Beispiel zum Abrufen der Schnittstelle finden Sie in der IDiaEnumSectionContribs IDiaSectionContrib Schnittstelle.

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: msdia140.dll

Siehe auch