IDiaLineNumberIDiaLineNumber

Greift auf Informationen zu, die den Prozess der Zuordnung von einem Byteblock von Bildtext zu einer Quelldatei-Zeilennummer beschreiben.Accesses information that describes the process of mapping from a block of bytes of image text to a source file line number.

SyntaxSyntax

IDiaLineNumber : IUnknown

Methoden in Vtable-ReihenfolgeMethods in Vtable Order

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

MethodeMethod BeschreibungDescription
IDiaLineNumber::get_compilandIDiaLineNumber::get_compiland Ruft einen Verweis auf das Symbol für das kompiand ab, das die Bytes von Bildtext bereitgestellt hat.Retrieves a reference to the symbol for the compiland that contributed the bytes of image text.
IDiaLineNumber::get_sourceFileIDiaLineNumber::get_sourceFile Ruft einen Verweis auf das Quelldatei Objekt ab.Retrieves a reference to the source file object.
IDiaLineNumber::get_lineNumberIDiaLineNumber::get_lineNumber Ruft die Zeilennummer in der Quelldatei ab.Retrieves the line number in the source file.
IDiaLineNumber::get_lineNumberEndIDiaLineNumber::get_lineNumberEnd Ruft die 1-basierte Quell Zeilennummer ab, in der die Anweisung oder der Ausdruck endet.Retrieves the one-based source line number where the statement or expression ends.
IDiaLineNumber::get_columnNumberIDiaLineNumber::get_columnNumber Ruft die Nummer der Spalte ab, in der der Ausdruck oder die Anweisung beginnt.Retrieves the column number where the expression or statement begins.
IDiaLineNumber::get_columnNumberEndIDiaLineNumber::get_columnNumberEnd Ruft die Nummer der Spalte ab, in der der Ausdruck oder die Anweisung endet.Retrieves the column number where the expression or statement ends.
IDiaLineNumber::get_addressSectionIDiaLineNumber::get_addressSection Ruft den Abschnitts Teil der Speicheradresse ab, in der ein-Block beginnt.Retrieves the section part of the memory address where a block begins.
IDiaLineNumber::get_addressOffsetIDiaLineNumber::get_addressOffset Ruft den Offset Teil der Speicheradresse ab, in der ein-Block beginnt.Retrieves the offset part of the memory address where a block begins.
IDiaLineNumber::get_relativeVirtualAddressIDiaLineNumber::get_relativeVirtualAddress Ruft die Bild relative virtuelle Adresse (RVA) eines-Blocks ab.Retrieves the image relative virtual address (RVA) of a block.
IDiaLineNumber::get_virtualAddressIDiaLineNumber::get_virtualAddress Ruft die virtuelle Adresse (VA) eines-Blocks ab.Retrieves the virtual address (VA) of a block.
IDiaLineNumber::get_lengthIDiaLineNumber::get_length Ruft die Anzahl der Bytes in einem-Block ab.Retrieves the number of bytes in a block.
IDiaLineNumber::get_sourceFileIdIDiaLineNumber::get_sourceFileId Ruft einen eindeutigen Quelldatei Bezeichner für die Quelldatei ab, die diese Zeile bereitgestellt hat.Retrieves a unique source file identifier for the source file that contributed this line.
IDiaLineNumber::get_statementIDiaLineNumber::get_statement Ruft ein Flag ab, das angibt, dass diese Zeilen Informationen den Anfang einer Anweisung in der Programmquelle beschreiben.Retrieves a flag indicating that this line information describes the beginning of a statement in the program source.
IDiaLineNumber::get_compilandIdIDiaLineNumber::get_compilandId Ruft den eindeutigen Bezeichner für die Kompilierungen ab, die diese Zeile bereitgestellt hat.Retrieves the unique identifier for the compiland that contributed this line.

HinweiseRemarks

Hinweise für AufruferNotes for Callers

Rufen Sie diese Schnittstelle durch Aufrufen der IDiaEnumLineNumbers:: Item -Methode oder der IDiaEnumLineNumbers:: Next -Methode ab.Obtain this interface by calling the IDiaEnumLineNumbers::Item or IDiaEnumLineNumbers::Next methods.

BeispielExample

Die folgende Funktion zeigt Zeilennummern an, die in einer Funktion (dargestellt durch pSymbol) verwendet werden.The following function displays line numbers used in a function (represented by pSymbol).

void dumpFunctionLines( IDiaSymbol* pSymbol, IDiaSession* pSession )
{
    ULONGLONG length = 0;
    DWORD     isect  = 0;
    DWORD     offset = 0;

    pSymbol->get_addressSection( &isect );
    pSymbol->get_addressOffset( &offset );
    pSymbol->get_length( &length );
    if ( isect != 0 && length > 0 )
    {
        CComPtr< IDiaEnumLineNumbers > pLines;
        if ( SUCCEEDED( pSession->findLinesByAddr(
                                      isect,
                                      offset,
                                      static_cast<DWORD>( length ),
                                      &pLines)
                      )
           )
        {
            CComPtr< IDiaLineNumber > pLine;
            DWORD celt      = 0;
            bool  firstLine = true;

            while ( SUCCEEDED( pLines->Next( 1, &pLine, &celt ) ) &&
                    celt == 1 )
            {
                DWORD offset;
                DWORD seg;
                DWORD linenum;
                CComPtr< IDiaSymbol >     pComp;
                CComPtr< IDiaSourceFile > pSrc;

                pLine->get_compiland( &pComp );
                pLine->get_sourceFile( &pSrc );
                pLine->get_addressSection( &seg );
                pLine->get_addressOffset( &offset );
                pLine->get_lineNumber( &linenum );
                printf( "\tline %d at 0x%x:0x%x\n", linenum, seg, offset );
                pLine = NULL;
                if ( firstLine )
                {
                    // sanity check
                    CComPtr< IDiaEnumLineNumbers > pLinesByLineNum;
                    if ( SUCCEEDED( pSession->findLinesByLinenum(
                                                  pComp,
                                                  pSrc,
                                                  linenum,
                                                  0,
                                                  &pLinesByLineNum)
                                  )
                       )
                    {
                        CComPtr< IDiaLineNumber > pLine;
                        DWORD celt;
                        while ( SUCCEEDED( pLinesByLineNum->Next( 1, &pLine, &celt ) ) &&
                                celt == 1 )
                        {
                            DWORD offset;
                            DWORD seg;
                            DWORD linenum;

                            pLine->get_addressSection( &seg );
                            pLine->get_addressOffset( &offset );
                            pLine->get_lineNumber( &linenum );
                            printf( "\t\tfound line %d at 0x%x:0x%x\n", linenum, seg, offset );
                            pLine = NULL;
                        }
                    }
                    firstLine = false;
                }
            }
        }
    }
}

AnforderungenRequirements

Header: Dia2.hHeader: Dia2.h

Bibliothek: diaguids. libLibrary: diaguids.lib

DLL: msdia80.dllDLL: msdia80.dll

Siehe auchSee also