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


IDiaDataSource::loadDataForExe

Открывает и подготавливает данные отладки, связанные с файлом .exe/.dll.

Синтаксис

HRESULT loadDataForExe (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   IUnknown* pCallback
);

Параметры

executable

[in] Путь к файлу .exe или .dll.

searchPath

[in] Альтернативный путь для поиска данных отладки.

pCallback

[in] Интерфейс IUnknown для объекта, который поддерживает интерфейс обратного вызова отладки, например IDiaLoadCallback, IDiaLoadCallback2, IDiaReadExeAtOffsetCallback и /или интерфейсы IDiaReadExeAtRVACallback .

Возвращаемое значение

В случае успешного выполнения возвращается S_OK; в противном случае возвращается код ошибки. В следующей таблице показаны некоторые возможные коды ошибок для этого метода.

значение Описание
E_PDB_NOT_FOUND Не удалось открыть файл или файл имеет недопустимый формат.
E_PDB_FORMAT Попытка получить доступ к файлу с устаревшим форматом.
E_PDB_INVALID_SIG Подпись не соответствует.
E_PDB_INVALID_AGE Возраст не соответствует.
E_INVALIDARG Недопустимый параметр .
E_UNEXPECTED Источник данных уже подготовлен.

Замечания

Заголовок отладки файла .exe/.dll называет связанное расположение данных отладки.

Если данные отладки загружаются с сервера символов, symsrv.dll должны присутствовать в том же каталоге, где установлено приложение пользователя или msdia140.dll, или он должен присутствовать в системном каталоге.

Этот метод считывает заголовок отладки, а затем ищет и подготавливает данные отладки. Ход выполнения поиска может сообщаться и контролироваться с помощью обратных вызовов. Например, метод IDiaLoadCallback::NotifyDebugDir вызывается при поиске IDiaDataSource::loadDataForExe и обработке каталога отладки.

Интерфейсы IDiaReadExeAtOffsetCallback и IDiaReadExeAtRVACallback позволяют клиентскому приложению предоставлять альтернативные методы для чтения данных из исполняемого файла, если доступ к файлу невозможен напрямую через стандартный ввод-вывод файла.

Чтобы загрузить PDB-файл без проверки, используйте метод IDiaDataSource::loadDataFromPdb .

Чтобы проверить PDB-файл с определенными критериями, используйте метод IDiaDataSource::loadAndValidateDataFromPdb .

Чтобы загрузить PDB-файл непосредственно из памяти, используйте метод IDiaDataSource::loadDataFromIStream .

Пример

class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExe( L"myprog.exe", L".\debug", (IUnknown*)&callback);
if (FAILED(hr))
{
    // Report error
}

См. также