Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Извлекает данные, описывающие вклад раздела, то есть непрерывный блок памяти, внесенный в образ компилятором.
Синтаксис
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_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 сведений о перемещении для раздела. |
IDiaSectionContrib::get_compilandId |
Извлекает идентификатор компилятора для раздела. |
IDiaSectionContrib::get_code16bit |
Извлекает флаг, указывающий, содержит ли раздел 16-разрядный код. |
Замечания
Заметки для вызывающих абонентов
Этот интерфейс получается путем вызова 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