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


IDiaDataSource::loadDataForExe

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

Синтаксис

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

Параметры

executable

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

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 метод находит и обрабатывает каталог отладки.

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

Чтобы загрузить файл с предварительной .pdb выборкой записей символов, используйте IDiaDataSourceEx::loadDataForExeEx этот метод.

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

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

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

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

Пример

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

См. также