Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предоставляет расширенный контекст запроса для символов отладки.
Синтаксис
IDiaSessionEx : IDiaSession
Методика
В следующей таблице показаны методы IDiaSessionEx.
| Метод | Описание |
|---|---|
IDiaSessionEx::isFastLinkPDB |
Извлекает логическое значение, указывающее, что исходная отладочная информация была создана с /DEBUG:fastlink. |
IDiaSessionEx::isPortablePDB |
Извлекает логическое значение, указывающее, что исходная отладочная информация использует формат переносимого PDB. |
| "IDiaSessionEx::getSourceLinkInfo" | Извлекает перечисление сведений о исходной ссылке. |
Замечания
Важно вызвать метод IDiaSession::put_loadAddress после создания объекта IDiaSession , а значение, переданное методу put_loadAddress, должно быть ненулевым — для доступа к любым свойствам символов виртуального адреса (VA). Адрес загрузки поступает из любой программы, загружаемой исполняемым файлом, отлаживаемым. Например, можно вызвать функцию Win32 GetModuleInformation, чтобы получить адрес нагрузки для исполняемого файла, учитывая дескриптор исполняемого файла.
Так как IDiaSessionEx наследуется от IDiaSession, он alos имеет все те же методы и может передаваться любой функции, которая принимает IDiaSession.
Пример
В этом примере показано, как получить интерфейс IDiaSessionEx в рамках общей инициализации пакета SDK для доступа к интерфейсу отладки (DIA).
CComPtr<IDiaDataSource> pSource;
ComPtr<IDiaSessionEx> psessionex;
void InitializeDIA(const char *szFilename)
{
HRESULT hr = CoCreateInstance( CLSID_DiaSource,
NULL,
CLSCTX_INPROC_SERVER,
__uuidof( IDiaDataSource ),
(void **) &pSource);
if (FAILED(hr))
{
Fatal("Could not CoCreate CLSID_DiaSource. Register msdia140.dll." );
}
wchar_t wszFilename[ _MAX_PATH ];
mbstowcs( wszFilename,
szFilename,
sizeof( wszFilename )/sizeof( wszFilename[0] ) );
if ( FAILED( pSource->loadDataFromPdb( wszFilename ) ) )
{
if ( FAILED( pSource->loadDataForExe( wszFilename, NULL, NULL ) ) )
{
Fatal( "loadDataFromPdb/Exe" );
}
}
ComPtr<IDiaSession> psession;
if ( FAILED( pSource->openSession( &psession ) ) )
{
Fatal( "openSession" );
}
if ( FAILED( psession.QueryInterface(&psessionex) ) )
{
Fatal( "Failed to upgrade from IDiaSession to IDiaSessionEx, are you using an older version of msdia140.dll?" );
}
}
Требования
Заголовок: Dia2.h
Библиотека: diaguids.lib
DLL: msdia140.dll
См. также
- интерфейсов (пакет SDK для доступа к интерфейсу отладки)
- Обзор
- Exe
IDiaAddressMapIDiaDataSourceIDiaDataSource::openSession- запросе . Файл PDB