Sdílet prostřednictvím


IDiaDataSourceEx::ValidatePdbEx

Ověří, že soubor databáze programu (.pdb) odpovídá zadaným informacím o podpisu.

Syntaxe

HRESULT ValidatePdb ( 
   LPCOLESTR    pdbPath,
   const GUID*  pcsig70,
   DWORD        sig,
   DWORD        age,
   BOOL*        pfStripped
);

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.

PfStripped

[ven] Pokud soubor PDB odpovídá ostatním informacím, nastaví se tento parametr tak, aby indikoval, jestli byl soubor PDB odebrán z privátních symbolů. Tato hodnota je stejná jako funkce IDiaSymbol::get_isStripped. Pokud pdB neodpovídá ostatním hodnotám nebo tato metoda selže, tento parametr není zadán.

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. Tato metoda ověří, že signatura a stáří souboru .pdb odpovídají hodnotám zadaným bez jiného načtení souboru PDB nebo jeho přípravy na použití.

K načtení souboru .pdb bez ověření použijte metodu IDiaDataSourceEx::loadDataFromPdbEx .

Chcete-li načíst a ověřit soubor .pdb s konkrétními kritérii, použijte metodu IDiaDataSourceEx::loadAndValidateDataFromPdbEx .

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;
BOOL fStripped              = FALSE;

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

Viz také