次の方法で共有


IDiaDataSourceEx::loadAndValidateDataFromPdbEx

プログラム データベース (.pdb) ファイルが指定された署名情報と一致することを開いて確認し、.pdb ファイルをデバッグ データ ソースとして準備し、省略可能なレコードプリフェッチを行います。

構文

HRESULT loadAndValidateDataFromPdbEx ( 
   LPCOLESTR pdbPath,
   GUID*     pcsig70,
   DWORD     sig,
   DWORD     age,
   BOOL      fPdbPrefetching
);

パラメーター

pdbPath

[入力] .pdb ファイルへのパス。

pcsig70

[in].pdb ファイル署名に対して検証するグローバル一意識別子 (GUID) 署名。 GUID シグネチャがあるのは、Visual C++ 以降の .pdb ファイルだけです。

sig

[入力] .pdb ファイルのシグネチャと照合する 32 ビット シグネチャ。

age

[入力] 確認する経過期間値。 年齢は必ずしも既知の時間値に対応しているわけではありません。.pdb ファイルが対応する.exe ファイルと同期していないかどうかを判断するために使用されます。

fPdbPrefetching

[in] TRUEに設定すると、隣接するデバッグ レコードがメモリにプリフェッチされ、より小さいファイル I/O 操作の数が少なく、より大きな操作に置き換えられる可能性があるため、それらのレコードにアクセスすると、メモリ使用量が増加する可能性があるため、全体的なスループットが向上する可能性があります。 FALSEに設定すると、これはIDiaDataSource::loadAndValidateDataFromPdbと同じように動作します。 他の値に設定すると、動作は指定されません。

戻り値

成功した場合は、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 ファイルを読み込むには、 IDiaDataSourceEx::loadDataFromPdbEx メソッドを使用します。

(コールバック メカニズムを使用して) データ読み込みプロセスにアクセスするには、 IDiaDataSourceEx::loadDataForExeEx メソッドを使用します。

.pdb ファイルをメモリから直接読み込むには、 IDiaDataSourceEx::loadDataFromIStreamEx メソッドを使用します。

読み込まずに .pdb ファイルを検証するには、 IDiaDataSourceEx::ValidatePdb メソッドを使用します。

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->loadAndValidateDataFromPdbEx( L"yprog.pdb",
                                            &expectedGUIDSignature,
                                            expectedFileSignature,
                                            expectedAge,
                                            TRUE);
if (FAILED(hr))
{
    // Report an error
}

関連項目