次の方法で共有


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
}

関連項目