IDiaSectionContrib
擷取描述區段貢獻的資料,也就是編譯模組貢獻給映像的連續記憶體區塊。
語法
IDiaSectionContrib : IUnknown
依照 Vtable 順序的方法
下表顯示 IDiaSectionContrib
方法。
備註
呼叫端注意事項
呼叫 和 IDiaEnumSectionContribs::Next
方法可取得IDiaEnumSectionContribs::Item
這個介面。 IDiaEnumSectionContribs
如需取得IDiaSectionContrib
介面的範例,請參閱 介面。
範例
此函式會顯示每個區段的位址,以及任何相關聯的符號。 IDiaEnumSectionContribs
請參閱 介面,以查看如何IDiaSectionContrib
取得介面。
void PrintSectionContrib(IDiaSectionContrib* pSecContrib, IDiaSession* pSession)
{
if (pSecContrib != NULL && pSession != NULL)
{
DWORD rva;
if ( pSecContrib->get_relativeVirtualAddress( &rva ) == S_OK )
{
printf( "\taddr: 0x%.8X", rva );
pSecContrib = NULL;
CComPtr<IDiaSymbol> pSym;
if ( psession->findSymbolByRVA( rva, SymTagNull, &pSym ) == S_OK )
{
CDiaBSTR name;
DWORD tag;
pSym->get_symTag( &tag );
pSym->get_name( &name );
printf( " symbol: %ws (%ws)\n",
name != NULL ? name : L"",
szTags[ tag ] );
}
else
{
printf( "<no symbol found?>\n" );
}
}
else
{
DWORD isect;
DWORD offset;
pSecContrib->get_addressSection( &isect );
pSecContrib->get_addressOffset( &offset );
printf( "\taddr: 0x%.4X:0x%.8X", isect, offset );
pSecContrib = NULL;
CComPtr<IDiaSymbol> pSym;
if ( SUCCEEDED( psession->findSymbolByAddr(
isect,
offset,
SymTagNull,
&pSym )
)
)
{
CDiaBSTR name;
DWORD tag;
pSym->get_symTag( &tag );
pSym->get_name( &name );
printf( " symbol: %ws (%ws)\n",
name != NULL ? name : L"",
szTags[ tag ] );
}
else
{
printf( "<no symbol found?>\n" );
}
}
}
}
需求
標頭: Dia2.h
程式庫: diaguids.lib
DLL:msdia140.dll