IDiaSectionContrib
Извлекает данные, описывающие вклад раздела, то есть непрерывный блок памяти, внесенный в образ компилятором.
Синтаксис
IDiaSectionContrib : IUnknown
Методы в порядке таблицы Vtable
В следующей таблице показаны методы IDiaSectionContrib
.
Метод | Description |
---|---|
IDiaSectionContrib::get_compiland | Извлекает ссылку на символ компилятора, который внес этот раздел. |
IDiaSectionContrib::get_addressSection | Извлекает часть раздела адреса вклада. |
IDiaSectionContrib::get_addressOffset | Извлекает часть смещения адреса вклада. |
IDiaSectionContrib::get_relativeVirtualAddress | Извлекает относительный виртуальный адрес образа (RVA) вклада. |
IDiaSectionContrib::get_virtualAddress | Извлекает виртуальный адрес (VA) вклада. |
IDiaSectionContrib::get_length | Извлекает количество байтов в разделе. |
IDiaSectionContrib::get_notPaged | Извлекает флаг, указывающий, не удается ли вывести раздел из памяти. |
IDiaSectionContrib::get_nopad | Извлекает флаг, указывающий, не следует ли заполнять раздел на следующую границу памяти. |
IDiaSectionContrib::get_code | Извлекает флаг, указывающий, содержит ли раздел исполняемый код. |
IDiaSectionContrib::get_code16bit | Извлекает флаг, указывающий, содержит ли раздел 16-разрядный код. |
IDiaSectionContrib::get_initializedData | Извлекает флаг, указывающий, содержит ли раздел инициализированные данные. |
IDiaSectionContrib::get_uninitializedData | Извлекает флаг, указывающий, содержит ли раздел неинициализированные данные. |
IDiaSectionContrib::get_informational | Извлекает флаг, указывающий, содержит ли раздел комментарии или аналогичную информацию. |
IDiaSectionContrib::get_remove | Извлекает флаг, указывающий, удаляется ли раздел перед его созданием в памяти. |
IDiaSectionContrib::get_comdat | Извлекает флаг, указывающий, является ли раздел записью COMDAT. |
IDiaSectionContrib::get_discardable | Извлекает флаг, указывающий, может ли раздел быть отключен карта. |
IDiaSectionContrib::get_notCached | Извлекает флаг, указывающий, не может ли раздел кэшироваться. |
IDiaSectionContrib::get_share | Извлекает флаг, указывающий, можно ли совместно использовать раздел в памяти. |
IDiaSectionContrib::get_execute | Извлекает флаг, указывающий, является ли раздел исполняемым как код. |
IDiaSectionContrib::get_read | Извлекает флаг, указывающий, можно ли читать раздел. |
IDiaSectionContrib::get_write | Извлекает флаг, указывающий, можно ли записать раздел. |
IDiaSectionContrib::get_dataCrc | Извлекает циклическую избыточность проверка (CRC) данных в разделе. |
IDiaSectionContrib::get_relocationsCrc | Извлекает CRC сведений о перемещении для раздела. |
IDiaLineNumber::get_compilandId | Извлекает идентификатор компилятора для раздела. |
Замечания
Заметки для вызывающих абонентов
Этот интерфейс получен путем вызова методов IDiaEnumSectionContribs::Item и IDiaEnumSectionContribs::Next . Пример получения IDiaSectionContrib
интерфейса см. в интерфейсе IDiaEnumSectionContribs.
Пример
Эта функция отображает адрес каждого раздела вместе с любыми связанными символами. Ознакомьтесь с интерфейсом 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" );
}
}
}
}
Requirements
Заголовок: Dia2.h
Библиотека: diaguids.lib
DLL: msdia80.dll