Sdílet prostřednictvím


IDiaDataSource::loadAndValidateDataFromPdb

Otevře a ověří, že soubor databáze programu (.pdb) odpovídá zadaným informacím o podpisu a připraví soubor .pdb jako zdroj dat ladění.

Syntaxe

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

Parametry

pdbPath

[v] Cesta k souboru .pdb.

pcsig70

[v] Podpis globálně jedinečného identifikátoru (GUID) pro ověření podpisu souboru PDB. Pouze soubory .pdb v jazyce Visual C++ a novější mají podpisy GUID.

sig

[v] 32bitový podpis, který se má ověřit u podpisu souboru PDB.

age

[v] Věková hodnota, která se má ověřit. Věk nemusí nutně odpovídat žádné známé časové hodnotě, slouží k určení, zda je soubor .pdb mimo synchronizaci s odpovídajícím .exe souborem.

Návratová hodnota

V případě úspěchu vrátí hodnotu S_OK; v opačném případě vrátí kód chyby. Následující tabulka ukazuje možné návratové hodnoty pro tuto metodu.

Hodnota Popis
E_PDB_NOT_FOUND Soubor se nepodařilo otevřít nebo soubor má neplatný formát.
E_PDB_FORMAT Pokusil se o přístup k souboru s zastaralým formátem.
E_PDB_INVALID_SIG Podpis se neshoduje.
E_PDB_INVALID_AGE Věk se neshoduje.
E_INVALIDARG Neplatný parametr.
E_UNEXPECTED Zdroj dat je již připravený.

Poznámky

Soubor PDB obsahuje podpisové i věkové hodnoty. Tyto hodnoty se replikují v souboru .exe nebo .dll, který odpovídá souboru .pdb. Před přípravou zdroje dat tato metoda ověří, že signatura souboru .pdb a stáří odpovídají zadaným hodnotám.

Pokud chcete načíst soubor .pdb bez ověření, použijte metodu IDiaDataSource::loadDataFromPdb .

Pokud chcete získat přístup k procesu načítání dat (prostřednictvím mechanismu zpětného volání), použijte metodu IDiaDataSource::loadDataForExe .

Chcete-li načíst soubor .pdb přímo z paměti, použijte IDiaDataSource::loadDataFromIStream metoda.

Příklad

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
}

Viz také