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.
Hitung berdasarkan alamat berbagai simbol yang terkandung dalam sumber data.
Sintaks
IDiaEnumSymbolsByAddr : IUnknown
Metode dalam Urutan Vtable
Tabel berikut memperlihatkan metode IDiaEnumSymbolsByAddr.
| Metode | Deskripsi |
|---|---|
| IDiaEnumSymbolsByAddr::symbolByAddr | Memosisikan enumerator dengan melakukan pencarian berdasarkan bagian dan offset. |
| IDiaEnumSymbolsByAddr::symbolByRVA | Memosisikan enumerator dengan melakukan pencarian dengan alamat virtual relatif (RVA). |
| IDiaEnumSymbolsByAddr::symbolByVA | Memosisikan enumerator dengan melakukan pencarian berdasarkan alamat virtual (VA). |
| IDiaEnumSymbolsByAddr::Next | Mengambil simbol berikutnya secara berurutan berdasarkan alamat. Memperbarui posisi enumerator berdasarkan jumlah elemen yang diambil. |
| IDiaEnumSymbolsByAddr::Prev | Mengambil simbol sebelumnya secara berurutan berdasarkan alamat. Memperbarui posisi enumerator berdasarkan jumlah elemen yang diambil. |
| IDiaEnumSymbolsByAddr::Clone | Membuat salinan objek. |
Keterangan
Antarmuka ini menyediakan simbol yang dikelompokkan menurut alamat. Untuk bekerja dengan simbol yang dikelompokkan menurut jenis, misalnya SymTagUDT (jenis yang ditentukan pengguna) atau SymTagBaseClass, gunakan antarmuka IDiaEnumSymbols.
Catatan untuk Penelepon
Dapatkan antarmuka ini dengan memanggil metode IDiaSession::getSymbolsByAddr.
Contoh
Fungsi ini menampilkan nama dan alamat semua simbol yang diurutkan berdasarkan alamat virtual relatif.
void ShowSymbolsByAddress(IDiaSession *pSession)
{
CComPtr<IDiaEnumSymbolsByAddr> pEnumByAddr;
if ( FAILED( psession->getSymbolsByAddr( &pEnumByAddr ) ) )
{
Fatal( "getSymbolsByAddr" );
}
CComPtr<IDiaSymbol> pSym;
if ( FAILED( pEnumByAddr->symbolByAddr( 1, 0, &pSym ) ) )
{
Fatal( "symbolByAddr" );
}
DWORD rvaLast = 0;
if ( pSym->get_relativeVirtualAddress( &rvaLast ) == S_OK )
{
pSym = 0;
if ( FAILED( pEnumByAddr->symbolByRVA( rvaLast, &pSym ) ) )
{
Fatal( "symbolByAddr" );
}
printf( "Symbols in order\n" );
do
{
CDiaBSTR name;
if ( pSym->get_name( &name ) != S_OK )
{
printf( "\t0x%08X (%ws) <no name>\n", rvaLast );
}
else
{
printf( "\t0x%08X %ws\n", rvaLast, name );
}
pSym = 0;
celt = 0;
if ( FAILED( hr = pEnumByAddr->Next( 1, &pSym, &celt ) ) )
{
break;
}
} while ( celt == 1 );
}
}
Persyaratan
Header: Dia2.h
Library: diaguids.lib
DLL: msdia80.dll