IDiaSessionEx
Предоставляет расширенный контекст запроса для символов отладки.
Синтаксис
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
IDiaAddressMap
IDiaDataSource
IDiaDataSource::openSession
- запросе . Файл PDB