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


IDiaDataSource::loadDataFromMiscInfo

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

Синтаксис

HRESULT loadDataFromMiscInfo (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   DWORD     timeStampExe,
   DWORD     timeStampDbg,
   DWORD     sizeOfExe,
   DWORD     cbMiscInfo,
   BYTE*     pbMiscInfo,
   IUnknown* pCallback
);

Параметры

executable

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

searchPath

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

timeStampExe

[in] Альтернативная метка времени для исполняемого образа.

timeStampDbg

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

sizeOfExe

[in] Альтернативный размер исполняемого образа в байтах.

cbMiscInfo

[in] Размер в байтах pbMiscInfo параметра.

pbMiscInfo

[in] Альтернативный заголовок отладки в IMAGE_DEBUG_MISC формате, который предоставляет имя файла с данными отладки.

pCallback

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

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

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

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

Замечания

PbMiscInfo заменяет данные отладки в исполняемом образе и присваивает имена связанному расположению данных отладки. Метки времени и размеры используются для сопоставления сведений отладки.

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

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

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

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

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

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

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

Пример

DWORD dwTimeStamp = 0x3BF1C039;
DWORD dwSizeImage = 0x0000A000;
BYTE pbMiscInfo[0x110] = {
  ...
};
HRESULT hr = pSource->loadDataFromMiscInfo( L"myprog.exe", L".\debug", dwTimeStamp, dwTimeStamp, dwSizeOfImage, sizeof(pbMiscInfo), pbMiscInfo, nullptr);
if (FAILED(hr))
{
    // Report error
}

См. также