Поделиться через


IDiaSession

Предоставляет контекст запроса для символов отладки.

IDiaSession : IUnknown

Методы

В следующей таблице показаны методы IDiaSession.

Метод

Описание

IDiaSession::get_loadAddress

Извлекает адрес загрузки для исполняемого файла, который соответствует символам в этом хранилище символов. Это то же значение, которое было передано методу put_loadAddress.

IDiaSession::put_loadAddress

Задает адрес загрузки для исполняемого файла, который соответствует символам в этом хранилище символов.

Примечание

Важно вызывать этот метод при получении объект IDiaSession и прежде чем начать использование объекта.

IDiaSession::get_globalScope

Извлекает ссылку на глобальную область.

IDiaSession::getEnumTables

Возвращает перечислитель для всех таблиц, содержащихся в хранилище символов.

IDiaSession::getSymbolsByAddr

Возвращает перечислитель для всех именованных символов для статических местах.

IDiaSession::findChildren

Извлекает все дочерние элементы указанного родительского идентификатора, соответствующие имени и типа символа.

IDiaSession::findSymbolByAddr

Извлекает указанный символьный тип, содержащий либо ближайший к указанный адрес.

IDiaSession::findSymbolByRVA

Извлекает указанный символьный тип, содержащий либо ближайший к, заданный относительный виртуальный адрес (RVA).

IDiaSession::findSymbolByVA

Извлекает указанный символьный тип, содержащий либо ближайший к указанный виртуальный адрес (VA).

IDiaSession::findSymbolByToken

Получает символ, который содержит указанный маркер метаданных.

IDiaSession::symsAreEquiv

Проверяет наличие 2 символов эквивалентны.

IDiaSession::symbolById

Получает символ его уникальным идентификатором.

IDiaSession::findSymbolByRVAEx

Извлекает указанный символьный тип, содержащий либо ближайший к относительный виртуальный адрес указанные и смещения.

IDiaSession::findSymbolByVAEx

Извлекает указанный символьный тип, содержащий либо ближайший к указанный виртуальный адрес и смещения.

IDiaSession::findFile

Извлекает исходный файл compiland и именем.

IDiaSession::findFileById

Извлекает исходный файл идентификатором исходного файла.

IDiaSession::findLines

Получение числа линии в указанный идентификатор compiland и исходного файла.

IDiaSession::findLinesByAddr

Извлекает линии в указанном compiland, содержащих определенный адрес.

IDiaSession::findLinesByRVA

Извлекает линии в указанном compiland, которые содержат заданный относительный виртуальный адрес.

IDiaSession::findLinesByVA

Находит число линии для линий, содержащегося в заданном диапазоне адресов.

IDiaSession::findLinesByLinenum

Извлекает линии в указанном compiland исходным файлом и номеру линии.

IDiaSession::findInjectedSource

Извлекает источник, который был помещен в хранилище символов поставщиками атрибута или другими компонентами процесса компиляции.

IDiaSession::getEnumDebugStreams

Перечисляемая последовательность восстановления отладки потоки данных.

IDiaSession::findInlineFramesByAddr

Извлекает перечисление, которое позволяет клиенту выполнять перебор всех кадров встроенного по заданному адресу.

IDiaSession::findInlineFramesByRVA

Извлекает перечисление, которое позволяет клиенту выполнять перебор всех кадров относительному адресу встроенного по указанному виртуальному (RVA).

IDiaSession::findInlineFramesByVA

Извлекает перечисление, которое позволяет клиенту выполнять перебор всех кадров встроенного по указанному виртуальному адресу (VA).

IDiaSession::findInlineeLines

Извлекает перечисление, которое позволяет клиенту выполнять перебор число линии всех функций, является встроенной, прямо или косвенно, указанным родительским символом.

IDiaSession::findInlineeLinesByAddr

Извлекает перечисление, которое позволяет клиенту выполнять перебор число линии всех функций, является встроенной, прямо или косвенно, указанным родительским символом и содержится в указанный диапазон адресов.

IDiaSession::findInlineeLinesByRVA

Извлекает перечисление, которое позволяет клиенту выполнять перебор число линии всех функций, является встроенной, прямо или косвенно, указанным родительским символом и содержится в заданный относительный виртуальный адрес (RVA).

IDiaSession::findInlineeLinesByVA

Извлекает перечисление, которое позволяет клиенту выполнять перебор число линии всех функций, является встроенной, прямо или косвенно, указанным родительским символом и содержится в указанный виртуальный адрес (VA).

IDiaSession::findInlineeLinesByLinenum

Извлекает перечисление, которое позволяет клиенту выполнять перебор число линии всех функций, является встроенной, прямо или косвенно, определенных в файле источника и номер линии.

IDiaSession::findInlineesByName

Извлекает перечисление, которое позволяет клиенту выполнять перебор число линии всех встроенным функциям, которые соответствуют заданному имени.

IDiaSession::findSymbolsForAcceleratorPointerTag

Возвращает перечисление символов переменной, которая соответствует указанным значением тега в родительский функции заглушки сочетаний клавиш.

IDiaSession::findSymbolsByRVAForAcceleratorPointerTag

Если соответствующее значение тега, этот метод возвращает перечисление символов, содержащихся в заданной родительской функции заглушки сочетаний клавиш в указанном относительного виртуальному адресу.

IDiaSession::findAcceleratorInlineesByName

Возвращает перечисление символов для встроенных кадров, соответствующий указанному имени встроенной функции.

IDiaSession::findAcceleratorInlineesByLinenum

Возвращает перечисление символов для встроенных кадров, соответствующие указанному расположению источников.

Заметки

Важно вызвать метод IDiaSession::put_loadAddress после создания объекта IDiaSession — и значение, переданное методу put_loadAddress должно быть ненулевым — для всех свойств виртуального адресного пространства (VA) символов для быть доступно. Адрес загрузки поступает от загружаемой программы любой отлаживаемой исполняемому файлу. Например, можно вызвать функцию Win32 GetModuleInformation чтобы получить адрес загрузки для исполняемого файла, заданный дескриптор к исполняемому файлу.

Пример

В этом примере показано, как получить интерфейс IDiaSession как часть общей инициализации пакета SDK для доступа к интерфейсу отладки.

CComPtr<IDiaDataSource> pSource;
ComPtr<IDiaSession> psession;


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 msdia80.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" );
        }
    }
    if ( FAILED( pSource->openSession( &psession ) ) )
    {
        Fatal( "openSession" );
    }
}

Требования

Заголовок: Dia2.h

Библиотеки: diaguids.lib

Библиотеки DLL: msdia80.dll

См. также

Задачи

Запрос PDB-файла

Ссылки

Exe

IDiaAddressMap

IDiaDataSource

IDiaDataSource::openSession

IDiaSymbol::findChildren

Другие ресурсы

Интерфейсы (SDK для доступа к интерфейсу отладки)

Общие сведения (SDK для доступа к интерфейсу отладки)