IDiaSegmentIDiaSegment

Ordnet Daten aus der Abschnitts Nummer den Segmenten des Adressraums zu.Maps data from the section number to segments of address space.

SyntaxSyntax

IDiaSegment : IUnknown

Methoden in Vtable-ReihenfolgeMethods in Vtable Order

In der folgenden Tabelle sind die Methoden von IDiaSegment aufgeführt.The following table shows the methods of IDiaSegment.

MethodeMethod BeschreibungDescription
IDiaSegment::get_frameIDiaSegment::get_frame Ruft die Segment Nummer ab.Retrieves the segment number.
IDiaSegment::get_offsetIDiaSegment::get_offset Ruft den Offset in Segmenten ab, in denen der Abschnitt beginnt.Retrieves the offset in segments where the section begins.
IDiaSegment::get_lengthIDiaSegment::get_length Ruft die Anzahl der Bytes im Segment ab.Retrieves the number of bytes in the segment.
IDiaSegment::get_readIDiaSegment::get_read Ruft ein Flag ab, das angibt, ob das Segment gelesen werden kann.Retrieves a flag that indicates whether the segment can be read.
IDiaSegment::get_writeIDiaSegment::get_write Ruft ein Flag ab, das angibt, ob das Segment geändert werden kann.Retrieves a flag that indicates whether the segment can be modified.
IDiaSegment::get_executeIDiaSegment::get_execute Ruft ein Flag ab, das angibt, ob das Segment ausführbare Dateien ist.Retrieves a flag that indicates whether the segment is executable.
IDiaSegment::get_addressSectionIDiaSegment::get_addressSection Ruft die Abschnitts Nummer ab, die diesem Segment zugeordnet ist.Retrieves the section number that maps to this segment.
IDiaSegment::get_relativeVirtualAddressIDiaSegment::get_relativeVirtualAddress Ruft die relative virtuelle Adresse (RVA) am Anfang des Abschnitts ab.Retrieves the relative virtual address (RVA) of the beginning of the section.
IDiaSegment::get_virtualAddressIDiaSegment::get_virtualAddress Ruft die virtuelle Adresse (VA) am Anfang des Abschnitts ab.Retrieves the virtual address (VA) of the beginning of the section.

HinweiseRemarks

Da der DIA SDK bereits Übersetzungen des Abschnitts Offsets in relative virtuelle Adressen ausführt, werden die Informationen in der Segment Zuordnung von den meisten Anwendungen nicht verwendet.Because the DIA SDK already performs translations from the section offset to relative virtual addresses, most applications will not make use of the information in the segment map.

Hinweise für AufruferNotes for Callers

Rufen Sie diese Schnittstelle durch Aufrufen der IDiaEnumSegments:: Item -oder IDiaEnumSegments:: Next -Methode ab.Obtain this interface by calling the IDiaEnumSegments::Item or IDiaEnumSegments::Next methods. Weitere Informationen finden Sie im Beispiel.See the example for details.

BeispielExample

Diese Funktion zeigt die Adresse aller Segmente in einer Tabelle und das nächste Symbol an.This function displays the address of all segments in a table and the nearest symbol.

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 ] );
                }
            }
        }
    }
}

AnforderungenRequirements

Header: Dia2.hHeader: Dia2.h

Bibliothek: diaguids. libLibrary: diaguids.lib

DLL: msdia80.dllDLL: msdia80.dll

Siehe auchSee also