IDiaDataSourceEx::loadDataForExeEx
Открывает и подготавливает отладочные данные, связанные с файлом .exe/.dll, с необязательной предварительной выборкой записей.
Синтаксис
HRESULT loadDataForExeEx (
LPCOLESTR executable,
LPCOLESTR searchPath,
IUnknown* pCallback,
BOOL fPdbPrefetching
);
Параметры
executable
[in] Путь к файлу .exe или .dll.
searchPath
[in] Альтернативный путь для поиска данных отладки. Несколько путей должны быть разделены точкой с запятой. Пути могут содержать конечный путь \
.
pCallback
[in] Интерфейс IUnknown
для объекта, поддерживающего интерфейс обратного вызова отладки, например IDiaLoadCallback
, , IDiaLoadCallback2
IDiaReadExeAtOffsetCallback
и (или) 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
}