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


IDiaDataSourceEx::loadAndValidateDataFromPdbEx

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

Синтаксис

HRESULT loadAndValidateDataFromPdbEx ( 
   LPCOLESTR pdbPath,
   GUID*     pcsig70,
   DWORD     sig,
   DWORD     age,
   BOOL      fPdbPrefetching
);

Параметры

pdbPath

[in] Путь к PDB-файлу.

pcsig70

[in] Глобально уникальная подпись идентификатора (GUID), проверяемая с помощью подписи PDB-файла. Только PDB-файлы в Visual C++ и более поздних версий имеют сигнатуры GUID.

sig

[in] 32-разрядная подпись для проверки сигнатуры PDB-файла.

age

[in] Значение возраста для проверки. Возраст не обязательно соответствует любому известному значению времени, он используется для определения того, не синхронизирован ли PDB-файл с соответствующим файлом .exe.

fPdbPrefetching

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

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

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

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

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

Чтобы проверить 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->loadAndValidateDataFromPdbEx( L"yprog.pdb",
                                            &expectedGUIDSignature,
                                            expectedFileSignature,
                                            expectedAge,
                                            TRUE);
if (FAILED(hr))
{
    // Report an error
}

См. также