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


IDiaDataSource::loadAndValidateDataFromPdb

Открывает и проверяет, что файл базы данных программы (pdb) соответствует предоставленным данным о подписи и подготавливает pdb-файл в качестве источника данных отладки.

HRESULT loadAndValidateDataFromPdb ( 
   LPCOLESTR pdbPath,
   GUID*     pcsig70,
   DWORD     sig,
   DWORD     age
);

Параметры

  • pdbPath
    [in] путь к файлу pdb.

  • pcsig70
    [in] идентификатор GUID подпись, подлежащая проверке подписи для файла pdb. Только pdb-файлы in Visual C++ и более поздние версии имеют подписи GUID.

  • sig
    [in] 32 (sp2) подпись, подлежащая проверке подписи для файла pdb.

  • age
    [in] значение age, который требуется проверить. Длительность не обязательно соответствует любое известное значение времени, него используется для определения если pdb-файл из синхронизации с соответствующим exe-файла.

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

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

Значение

Описание

E_PDB_NOT_FOUND

Не удалось открыть файл или же файл имеет недопустимый формат.

E_PDB_FORMAT

Предпринята попытка получить доступ к файлу с устаревшими форматом.

E_PDB_INVALID_SIG

Сигнатура не совпадает.

E_PDB_INVALID_AGE

Age.

E_INVALIDARG

Недопустимый параметр.

E_UNEXPECTED

Источник данных уже был подготовлен.

Заметки

Pdb-файл содержит и сигнатурой и значения длительности. Эти значения будут реплицированы в exe- или dll-файла, соответствующий файлу pdb. Подготовка источника данных, прежде чем этот метод проверяет, что подпись и длительность pdb-файла с именами соответствующих предоставленным значения.

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

Чтобы получить доступ к процессу загрузки данных (через механизм обратного вызова, используйте) IDiaDataSource::loadDataForExe метод.

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

Пример

IDiaDataSource* pSource;  // Previously created data source.
DEFINE_GUID(expectedGUIDSignature,0x1234,0x5678,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08);
DWORD expectedFileSignature = 0x12345678;
DWORD expectedAge           = 128;

HRESULT hr;
hr = pSource->loadAndValidateDataFromPdb( L"yprog.pdb",
                                          &expectedGUIDSignature,
                                          expectedFileSignature,
                                          expectedAge);
if (FAILED(hr))
{
    // Report an error
}

См. также

Ссылки

IDiaDataSource

IDiaDataSource::loadDataForExe

IDiaDataSource::loadDataFromPdb

IDiaDataSource::loadDataFromIStream