Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Görüntü metni bloğundan kaynak dosya satırı numarasına eşleme işlemini açıklayan bilgilere erişir.
Sözdizimi
IDiaLineNumber : IUnknown
Vtable Sırasına Göre Yöntemler
Aşağıdaki tabloda yönteminin yöntemleri gösterilmektedir IDiaLineNumber.
| Metot | Açıklama |
|---|---|
| IDiaLineNumber::get_compiland | Görüntü metninin baytlarına katkıda bulunan compiland simgesine bir başvuru alır. |
| IDiaLineNumber::get_sourceFile | Kaynak dosya nesnesine başvuru alır. |
| IDiaLineNumber::get_lineNumber | Kaynak dosyadaki satır numarasını alır. |
| IDiaLineNumber::get_lineNumberEnd | Deyimin veya ifadenin sona erdiği tek tabanlı kaynak satır numarasını alır. |
| IDiaLineNumber::get_columnNumber | İfadenin veya deyimin başladığı sütun numarasını alır. |
| IDiaLineNumber::get_columnNumberEnd | İfadenin veya deyimin sona erdiği sütun numarasını alır. |
| IDiaLineNumber::get_addressSection | Bellek adresinin bir bloğun başladığı bölüm bölümünü alır. |
| IDiaLineNumber::get_addressOffset | Bellek adresinin bir bloğun başladığı uzaklık bölümünü alır. |
| IDiaLineNumber::get_relativeVirtualAddress | Bir bloğun görüntü göreli sanal adresini (RVA) alır. |
| IDiaLineNumber::get_virtualAddress | Bir bloğun sanal adresini (VA) alır. |
| IDiaLineNumber::get_length | Bir bloktaki bayt sayısını alır. |
| IDiaLineNumber::get_sourceFileId | Bu satıra katkıda bulunan kaynak dosya için benzersiz bir kaynak dosya tanımlayıcısı alır. |
| IDiaLineNumber::get_statement | Bu satır bilgilerinin program kaynağındaki bir deyimin başlangıcını açıklandığını belirten bir bayrak alır. |
| IDiaLineNumber::get_compilandId | Bu satıra katkıda bulunan compiland için benzersiz tanımlayıcıyı alır. |
Açıklamalar
Arayanlar İçin Notlar
IDiaEnumLineNumbers::Item veya IDiaEnumLineNumbers::Next yöntemlerini çağırarak bu arabirimi alın.
Örnek
Aşağıdaki işlev, bir işlevde kullanılan satır numaralarını görüntüler (ile pSymboltemsil edilir).
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;
}
}
}
}
}
Gereksinimler
Üst bilgi: Dia2.h
Kitaplık: diaguids.lib
DLL: msdia80.dll