Freigeben über


IDiaSectionContrib

Ruft die Daten ab, die über den beitrag Abschnitts beschrieben. h. einen zusammenhängenden Speicherblock, der dem Bild von einer Kompiliereinheit bereitgestellt wird.

IDiaSectionContrib : IUnknown

Methoden in die Vtable-Reihenfolge

In der folgenden Tabelle werden die Methoden von IDiaSectionContriban.

Methode

Beschreibung

IDiaSectionContrib::get_compiland

Ruft einen Verweis auf das Symbol Kompiliereinheits ab, das diesen Abschnitt beitrug.

IDiaSectionContrib::get_addressSection

Ruft den Teil der Adresse des Abschnitts Nachbedingung ab.

IDiaSectionContrib::get_addressOffset

Ruft den Offset Teil der Adresse des Nachbedingung ab.

IDiaSectionContrib::get_relativeVirtualAddress

Ruft die relative virtuelle Adresse (RVA) des Bilds in der Nachbedingung ab.

IDiaSectionContrib::get_virtualAddress

Ruft die virtuelle Adresse (VA) des Nachbedingung ab.

IDiaSectionContrib::get_length

Ruft die Anzahl der Bytes in einem Abschnitt ab.

IDiaSectionContrib::get_notPaged

Ruft ein Flag ab, das angibt, ob der Abschnitt nicht geblättertes aufgrund von ungenügendem Arbeitsspeicher erfolgen kann.

IDiaSectionContrib::get_nopad

Ruft ein Flag ab, das angibt, ob der Grenze Speicherplatz zur nächsten Abschnitt nicht aufgefüllt werden soll.

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 enthält initialisierte Daten.

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 Bereich entfernt wird, bevor er Teil des Bildes im Arbeitsspeicher ausgeführt wird.

IDiaSectionContrib::get_comdat

Ruft ein Flag ab, das angibt, ob es sich bei dem 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, ob der Abschnitt nicht zwischengespeichert werden kann.

IDiaSectionContrib::get_share

Ruft ein Flag ab, das angibt, ob der Bereich im Arbeitsspeicher freigegeben werden kann.

IDiaSectionContrib::get_execute

Ruft ein Flag ab, das angibt, ob der Bereich als Code ausgeführt werden kann.

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 Bereich geschrieben werden kann.

IDiaSectionContrib::get_dataCrc

Ruft die zyklische Blockprüfung (CRC) der Daten im Abschnitt ab.

IDiaSectionContrib::get_relocationsCrc

Ruft das Verschieben der CRC für den Abschnitt ab.

IDiaLineNumber::get_compilandId

Ruft den Bezeichner für den Kompiliereinheits Abschnitt ab.

Hinweise

Hinweise für Aufrufer

Diese Schnittstelle wird abgerufen, indem die IDiaEnumSectionContribs::Item und IDiaEnumSectionContribs::Next-Methoden aufgerufen werden.Zeigen Sie die IDiaEnumSectionContribs-Schnittstelle als Beispiel für die IDiaSectionContrib-Schnittstelle abzurufen.

Beispiel

Diese Funktion wird die Adresse eines Abschnitts zusammen mit allen zugeordneten Symbolen angezeigt.Zeigen Sie die IDiaEnumSectionContribs-Schnittstelle, um zu sehen, wie die IDiaSectionContrib-Schnittstelle ermittelt 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

DLLs: msdia80.dll

Siehe auch

Referenz

IDiaEnumSectionContribs

IDiaEnumSectionContribs::Item

IDiaEnumSectionContribs::Next

Weitere Ressourcen

Schnittstellen (Debug Interface Access SDK)