IDiaDataSource::loadAndValidateDataFromPdb
Открывает и проверяет, соответствует ли файл базы данных программы (PDB) предоставленным сигнатуре и подготавливает PDB-файл в качестве отладочного источника данных.
Синтаксис
HRESULT loadAndValidateDataFromPdb (
LPCOLESTR pdbPath,
GUID* pcsig70,
DWORD sig,
DWORD age
);
Параметры
pdbPath
[in] Путь к PDB-файлу.
pcsig70
[in] Глобально уникальная подпись идентификатора (GUID), проверяемая с помощью подписи PDB-файла. Только PDB-файлы в Visual C++ и более поздних версий имеют сигнатуры GUID.
sig
[in] 32-разрядная подпись для проверки сигнатуры PDB-файла.
age
[in] Значение возраста для проверки. Возраст не обязательно соответствует любому известному значению времени, он используется для определения того, не синхронизирован ли PDB-файл с соответствующим файлом .exe.
Возвращаемое значение
В случае успешного выполнения возвращается S_OK
; в противном случае возвращается код ошибки. В следующей таблице показаны возможные возвращаемые значения для этого метода.
значение | Описание |
---|---|
E_PDB_NOT_FOUND |
Не удалось открыть файл или файл имеет недопустимый формат. |
E_PDB_FORMAT |
Попытка получить доступ к файлу с устаревшим форматом. |
E_PDB_INVALID_SIG |
Подпись не соответствует. |
E_PDB_INVALID_AGE |
Возраст не соответствует. |
E_INVALIDARG |
Недопустимый параметр . |
E_UNEXPECTED |
Источник данных уже подготовлен. |
Замечания
PDB-файл содержит как сигнатуру, так и возрастные значения. Эти значения реплицируются в файле .exe или .dll, который соответствует PDB-файлу. Перед подготовкой источника данных этот метод проверяет, соответствует ли подписанный PDB-файл и возраст указанные значения.
Чтобы загрузить PDB-файл и проверить его с помощью предварительной выборки, используйте IDiaDataSourceEx::loadAndValidateDataFromPdbEx
этот метод.
Чтобы загрузить PDB-файл без проверки, используйте IDiaDataSource::loadDataFromPdb
этот метод.
Чтобы получить доступ к процессу загрузки данных (с помощью механизма обратного вызова), используйте IDiaDataSource::loadDataForExe
этот метод.
Чтобы загрузить PDB-файл непосредственно из памяти, используйте IDiaDataSource::loadDataFromIStream
этот метод.
Чтобы проверить PDB-файл без загрузки, используйте IDiaDataSourceEx::ValidatePdb
этот метод.
Пример
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
}