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 zu, die den Vorgang der Zuordnung eines Byteblocks des Imagetexts zur Zeilennummer einer Quelldatei beschreiben.
Syntax
IDiaLineNumber : IUnknown
Methoden in Vtable-Reihenfolge
In der folgenden Tabelle sind die Methoden von IDiaLineNumber
aufgeführt.
Methode | BESCHREIBUNG |
---|---|
IDiaLineNumber::get_compiland | Ruft einen Verweis auf das Symbol für die Kompiliereinheit ab, die die Bytes zum Imagetext beigetragen hat. |
IDiaLineNumber::get_sourceFile | Ruft einen Verweis auf das Quelldateiobjekt ab. |
IDiaLineNumber::get_lineNumber | Ruft die Zeilennummer in der Quelldatei ab. |
IDiaLineNumber::get_lineNumberEnd | Ruft die 1-basierte Zeilennummer im Quellcode ab, an der die Anweisung oder der Ausdruck endet. |
IDiaLineNumber::get_columnNumber | Ruft die Nummer der Spalte ab, bei der der Ausdruck oder die Anweisung beginnt. |
IDiaLineNumber::get_columnNumberEnd | Ruft die Spaltennummer ab, in der der Ausdruck oder die Anweisung endet. |
IDiaLineNumber::get_addressSection | Ruft den Abschnittsteil der Speicheradresse ab, an der ein Block beginnt. |
IDiaLineNumber::get_addressOffset | Ruft den Offsetteil der Speicheradresse ab, an der ein Block beginnt. |
IDiaLineNumber::get_relativeVirtualAddress | Ruft die virtuelle Adresse eines Blocks relativ zum Image (RVA) ab. |
IDiaLineNumber::get_virtualAddress | Ruft die virtuelle Adresse (VA) eines Blocks ab. |
IDiaLineNumber::get_length | Ruft die Anzahl der Bytes in einem Block ab. |
IDiaLineNumber::get_sourceFileId | Ruft einen eindeutigen Quelldateibezeichner für die Quelldatei ab, die diese Zeile beigetragen hat. |
IDiaLineNumber::get_statement | Ruft ein Flag ab, das anzeigt, dass diese Zeileninformationen den Beginn einer Anweisung in der Programmquelle beschreiben. |
IDiaLineNumber::get_compilandId | Ruft den eindeutigen Bezeichner für die Kompiliereinheit ab, die diese Zeile beigetragen hat. |
Bemerkungen
Hinweise für Aufrufer
Sie erhalten diese Schnittstelle durch Aufruf der Methoden IDiaEnumLineNumbers::Item oder IDiaEnumLineNumbers::Next.
Beispiel
Die folgende Funktion zeigt Zeilennummern an, die in einer Funktion verwendet werden (repräsentiert 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
DLL: msdia80.dll