Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Greift auf Informationen, die den Prozess der Zuordnung einer Byteblock Bild von Text in einer Quelldatei Zeilennummer für beschreibt.
IDiaLineNumber : IUnknown
Methoden in die Vtable-Reihenfolge
In der folgenden Tabelle werden die Methoden von IDiaLineNumberan.
Methode |
Beschreibung |
|---|---|
Ruft einen Verweis auf das Symbol für die Kompiliereinheit ab, die die Bytes Bild von Text beitrug. |
|
Ruft einen Verweis auf die Quelldatei Objekt ab. |
|
Ruft die Zeilennummer in der Quelldatei ab. |
|
Die 1-basierte Quellzeilen Zahl in der die Anweisungen oder enden Ausdrucks abruft. |
|
Ruft die Spaltennummer ab, in der der Ausdruck oder die Anweisung begonnen wird. |
|
Die Spaltennummer in der die Ausdrucks- oder Anweisung beendet wird. |
|
Ruft den Teil der Speicheradresse Abschnitts ab, in der ein Block beginnt. |
|
Ruft den Offset Teil der Speicheradresse ab, in der ein Block beginnt. |
|
Ruft die relative virtuelle Adresse des Bildes (RVA) eines Blocks ab. |
|
Ruft die virtuelle Adresse (VA) eines Blocks ab. |
|
Ruft die Anzahl der Bytes in einem Block ab. |
|
Ruft einen eindeutigen Bezeichner für eine Quelldatei für die Quelldatei ab, die diese Zeile beitrug. |
|
Ruft ein Flag ab, das angibt, dass die Zeileninformationen den Anfang einer Anweisung in der Quelle des Programms beschrieben. |
|
Ruft den eindeutigen Bezeichner der Kompiliereinheit ab, die diese Zeile beitrug. |
Hinweise
Hinweise für Aufrufer
Rufen Sie diese Schnittstelle, indem sie die IDiaEnumLineNumbers::Item oder IDiaEnumLineNumbers::Next-Methoden aufgerufen werden.
Beispiel
Die folgende Funktion werden die Zeilennummern an, die in einer Funktion verwendet werden (dargestellt durch 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;
}
}
}
}
}
Anforderungen
Header: Dia2.h
Bibliothek: diaguids.lib
DLLs: msdia80.dll