IDiaSectionContrib
检索描述节贡献的数据,即由编译单位贡献给图像的连续内存块。
语法
IDiaSectionContrib : IUnknown
Vtable 顺序中的方法
下表显示了 IDiaSectionContrib
方法。
注解
对调用者的说明
通过调用 IDiaEnumSectionContribs::Item
和 IDiaEnumSectionContribs::Next
方法获取此接口。 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