IDiaDataSourceEx::ValidatePdbEx
プログラム データベース (.pdb) ファイルが、指定された署名情報と一致することを確認します。
構文
HRESULT ValidatePdb (
LPCOLESTR pdbPath,
const GUID* pcsig70,
DWORD sig,
DWORD age,
BOOL* pfStripped
);
パラメーター
pdbPath
[入力] .pdb ファイルへのパス。
pcsig70
[in].pdb ファイル署名に対して検証するグローバル一意識別子 (GUID) 署名。 GUID シグネチャがあるのは、Visual C++ 以降の .pdb ファイルだけです。
sig
[入力] .pdb ファイルのシグネチャと照合する 32 ビット シグネチャ。
age
[入力] 確認する経過期間値。 年齢は必ずしも既知の時間値に対応しているわけではありません。.pdb ファイルが対応する.exe ファイルと同期していないかどうかを判断するために使用されます。
pfStripped
[out]PDB が他の情報と一致する場合、このパラメーターは、PDB がプライベート シンボルを削除されたかどうかを示すように設定されます。 これは、 IDiaSymbol::get_isStripped によって返されるのと同じ値です。 PDB が他の値と一致しない場合、またはこのメソッドが失敗した場合、このパラメーターは指定されていません。
戻り値
成功した場合は、S_OK
を返します。それ以外の場合は、エラー コードを返します。 次の表に、このメソッドで返される可能性のある戻り値を示します。
値 | 説明 |
---|---|
E_PDB_NOT_FOUND |
ファイルを開くことができなかったか、ファイルの形式が無効です。 |
E_PDB_FORMAT |
古い形式のファイルにアクセスしようとしました。 |
E_PDB_INVALID_SIG |
シグネチャが一致しません。 |
E_PDB_INVALID_AGE |
経過期間が一致しません。 |
E_INVALIDARG |
無効なパラメーター。 |
E_UNEXPECTED |
データ ソースは既に準備されています。 |
解説
.pdb ファイルには、シグネチャと経過期間の両方の値が含まれています。 これらの値は、.pdb ファイルに一致する .exe または .dll ファイルにレプリケートされます。 このメソッドは、名前付き .pdb ファイルのシグネチャと有効期間が指定された値と一致することを確認します。PDB を読み込んだり、使用するための準備を行ったりすることはありません。
検証なしで .pdb ファイルを読み込むには、 IDiaDataSourceEx::loadDataFromPdbEx
メソッドを使用します。
特定の条件に対して .pdb ファイルを読み込んで検証するには、 IDiaDataSourceEx::loadAndValidateDataFromPdbEx
メソッドを使用します。
例
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
}