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


IDiaDataSourceEx::loadDataForExeEx

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

Синтаксис

HRESULT loadDataForExeEx (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   IUnknown* pCallback,
   BOOL      fPdbPrefetching
);

Параметры

executable

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

searchPath

[in] Альтернативный путь для поиска данных отладки. Несколько путей должны быть разделены точкой с запятой. Пути могут содержать конечный путь \.

pCallback

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

fPdbPrefetching

[in] Если задано значение TRUE, смежные записи отладки предварительно извлекаются в память, потенциально заменяя многие операции ввода-вывода меньшего размера файлов меньшими, большими операциями и таким образом повышая общую пропускную способность по мере последующего доступа к этим записям, за счет потенциально повышенного использования памяти. Если задано значение FALSE, это поведение идентично IDiaDataSource::loadDataForExe. Если задано какое-то другое значение, поведение не указано.

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

В случае успешного выполнения возвращается 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 когда IDiaDataSourceEx::loadDataForExeEx метод находит и обрабатывает каталог отладки.

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

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

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

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

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

Пример

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

См. также