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
IDiaEnumSymbolsByAddr2 : IDiaEnumSymbolsByAdd
Metode dalam Urutan Vtable
Tabel berikut memperlihatkan metode IDiaEnumSymbolsByAddr2.
| Metode | Deskripsi |
|---|---|
IDiaEnumSymbolsByAddr2::symbolByAddrEx |
Memosisikan enumerator dengan melakukan pencarian berdasarkan bagian dan offset. |
IDiaEnumSymbolsByAddr2::symbolByRVAEx |
Memosisikan enumerator dengan melakukan pencarian dengan alamat virtual relatif (RVA). |
IDiaEnumSymbolsByAddr2::symbolByVAEx |
Memosisikan enumerator dengan melakukan pencarian berdasarkan alamat virtual (VA). |
IDiaEnumSymbolsByAddr2::NextEx |
Mengambil simbol berikutnya secara berurutan berdasarkan alamat. Memperbarui posisi enumerator berdasarkan jumlah elemen yang diambil. |
IDiaEnumSymbolsByAddr2::PrevEx |
Mengambil simbol sebelumnya secara berurutan berdasarkan alamat. Memperbarui posisi enumerator berdasarkan jumlah elemen yang diambil. |
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 IDiaEnumSymbols antarmuka .
Catatan untuk penelepon
Dapatkan antarmuka ini dengan memanggil IDiaSession::getSymbolsByAddr metode dan kemudian memanggil IUnknown::QueryInterface dengan parameter yang riid diatur ke IID_IDiaEnumSymbolsByAddr2.
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<IDiaEnumSymbolsByAddr2> pEnumByAddr2;
if ( FAILED( pEnumByAddr->QueryInterface( IID_IDiaEnumSymbolsByAddr2, &pEnumByAddr2 ) ) )
{
Fatal( "getSymbolsByAddr" );
}
CComPtr<IDiaSymbol> pSym;
if ( FAILED( pEnumByAddr2->symbolByAddrEx( FALSE, 1, 0, &pSym ) ) )
{
Fatal( "symbolByAddr" );
}
DWORD rvaLast = 0;
if ( pSym->get_relativeVirtualAddress( &rvaLast ) == S_OK )
{
pSym = 0;
if ( FAILED( pEnumByAddr2->symbolByRVAEx( FALSE, 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 = pEnumByAddr2->NextEx( FALSE, 1, &pSym, &celt ) ) )
{
break;
}
} while ( celt == 1 );
}
}
Persyaratan
Header: Dia2.h
Library: diaguids.lib
DLL: msdia140.dll