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
}