IDiaEnumSymbolsByAddr
주소에 의해 데이터 소스에 포함 된 다양 한 기호를 열거 합니다.
IDiaEnumSymbolsByAddr : IUnknown
메서드에서 Vtable 순서
다음 표에서 메서드를 IDiaEnumSymbolsByAddr.
메서드 |
설명 |
---|---|
열거자 섹션 및 오프셋에서 조회를 수행 하 여 배치 합니다. |
|
열거자가 상대 가상 주소 (RVA)에서 조회를 수행 하 여 배치 합니다. |
|
가상 주소 (VA)에서 조회를 수행 하 여 해당 열거자를 배치 합니다. |
|
순서에서 다음 기호에서 주소를 검색합니다.반입 된 요소 수 만큼는 열거자의 위치를 업데이트 합니다. |
|
이전 기호 순서 대로 주소를 검색합니다.반입 된 요소 수 만큼는 열거자의 위치를 업데이트 합니다. |
|
개체의 복사본을 만듭니다. |
설명
이 주소에 의해 그룹화 기호는.기호 형식으로, 예를 들어 그룹화를 사용 하려면 SymTagUDT (사용자 정의 형식) 또는 SymTagBaseClass를 사용 하는 IDiaEnumSymbols 인터페이스.
호출자에 대 한 참고 사항
이 인터페이스를 호출 하 여 얻을 IDiaSession::getSymbolsByAddr 메서드가 있습니다.
예제
이 함수에는 이름 및 주소 상대 가상 주소로 주문한 모든 기호를 표시 합니다.
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 );
}
}
요구 사항
헤더: Dia2.h
라이브러리: diaguids.lib
DLL: msdia80.dll