Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Akses informasi yang menjelaskan proses pemetaan dari blok byte teks gambar ke nomor baris file sumber.
Sintaks
IDiaLineNumber : IUnknown
Metode dalam Urutan Vtable
Tabel berikut memperlihatkan metode IDiaLineNumber.
| Metode | Deskripsi |
|---|---|
| IDiaLineNumber::get_compiland | Mengambil referensi ke simbol untuk kompilasi yang berkontribusi byte teks gambar. |
| IDiaLineNumber::get_sourceFile | Mengambil referensi ke objek file sumber. |
| IDiaLineNumber::get_lineNumber | Mengambil nomor baris dalam file sumber. |
| IDiaLineNumber::get_lineNumberEnd | Mengambil nomor baris sumber berbasis satu tempat pernyataan atau ekspresi berakhir. |
| IDiaLineNumber::get_columnNumber | Mengambil nomor kolom tempat ekspresi atau pernyataan dimulai. |
| IDiaLineNumber::get_columnNumberEnd | Mengambil nomor kolom tempat ekspresi atau pernyataan berakhir. |
| IDiaLineNumber::get_addressSection | Mengambil bagian dari alamat memori tempat blok dimulai. |
| IDiaLineNumber::get_addressOffset | Mengambil bagian offset dari alamat memori tempat blok dimulai. |
| IDiaLineNumber::get_relativeVirtualAddress | Mengambil alamat virtual relatif gambar (RVA) blok. |
| IDiaLineNumber::get_virtualAddress | Mengambil alamat virtual (VA) blok. |
| IDiaLineNumber::get_length | Mengambil jumlah byte dalam blok. |
| IDiaLineNumber::get_sourceFileId | Mengambil pengidentifikasi file sumber unik untuk file sumber yang berkontribusi pada baris ini. |
| IDiaLineNumber::get_statement | Mengambil bendera yang menunjukkan bahwa informasi baris ini menjelaskan awal pernyataan dalam sumber program. |
| IDiaLineNumber::get_compilandId | Mengambil pengidentifikasi unik untuk kompilasi yang berkontribusi pada baris ini. |
Keterangan
Catatan untuk Penelepon
Dapatkan antarmuka ini dengan memanggil metode IDiaEnumLineNumbers::Item atau IDiaEnumLineNumbers::Next.
Contoh
Fungsi berikut menampilkan nomor baris yang digunakan dalam fungsi (diwakili oleh 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;
}
}
}
}
}
Persyaratan
Header: Dia2.h
Library: diaguids.lib
DLL: msdia80.dll