次の方法で共有


IDiaDataSource::loadDataFromCodeViewInfo

.exe / .dll ファイルに関連付けられているデバッグ データを開いて準備します。

構文

HRESULT loadDataFromCodeViewInfo (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   DWORD     cbCvInfo,
   BYTE*     pbCvInfo,
   IUnknown* pCallback
);

パラメーター

実行可能ファイル

[in] .exe または .dll ファイルへのパス。

searchPath

[in]デバッグ データを検索するための代替パス。 複数のパスはセミコロンで区切る必要があります。 パスには、末尾の \が含まれている場合があります。

cbCvInfo

[in] pbCvInfo パラメーターのサイズ (バイト単位)。

pbCvInfo

[in](実行可能ファイルのIMAGE_DEBUG_DIRECTORYから通常の読み取り値を置き換えるために) 代替のデバッグ ヘッダー コード ビュー情報。 RSDS または NB10 ヘッダーのみがサポートされています。

pCallback

[in]IUnknownIDiaLoadCallbackIDiaLoadCallback2IDiaReadExeAtOffsetCallback インターフェイスなど、デバッグ コールバック インターフェイスをサポートするオブジェクトの インターフェイス。

戻り値

成功した場合は、S_OKを返します。それ以外の場合は、エラー コードを返します。 次の表は、このメソッドで発生する可能性のあるエラー コードの一部を示しています。

価値 説明
E_PDB_NOT_FOUND ファイルを開けませんでした。または、ファイルの形式が無効です。
E_PDB_FORMAT サポートされていない形式のファイルにアクセスしようとしました。
E_PDB_INVALID_SIG 署名が一致しません。
E_PDB_INVALID_AGE 年齢が一致しません。
E_INVALIDARG パラメーターが無効です。
E_UNEXPECTED データ ソースは既に準備されています。

注釈

コード ビュー情報は、 IMAGE_DEBUG_TYPE_CODEVIEW 形式で、関連付けられているデバッグ データの場所に名前を付け、照合する署名フィールドと有効期間フィールドを指定します。

シンボル サーバーからデバッグ データを読み込む場合、 symsrv.dll は、ユーザーのアプリケーションまたは msdia140.dll がインストールされているのと同じディレクトリに存在するか、システム ディレクトリに存在する必要があります。

このメソッドは、指定されたデバッグ ヘッダーを読み取り、デバッグ データを検索して準備します。 検索の進行状況は、必要に応じて、コールバックによって報告および制御される場合があります。 たとえば、 IDiaLoadCallback::NotifyDebugDir は、 IDiaDataSource::loadDataForExe メソッドがデバッグ ディレクトリを検索して処理するときに呼び出されます。

IDiaReadExeAtOffsetCallbackインターフェイスとIDiaReadExeAtRVACallback インターフェイスを使用すると、クライアント アプリケーションは、標準ファイル I/O を介してファイルに直接アクセスできない場合に実行可能ファイルからデータを読み取るための代替方法を提供できます。

検証なしで .pdb ファイルを読み込むには、 IDiaDataSource::loadDataFromPdb メソッドを使用します。

特定の条件に対して .pdb ファイルを検証するには、 IDiaDataSource::loadAndValidateDataFromPdb メソッドを使用します。

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

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

BYTE pbCodeViewInfo[] = {
  ...
};

HRESULT hr = pSource->loadDataFromCodeViewInfo( L"myprog.exe", L".\debug", sizeof(pbCodeViewInfo), pbCodeViewInfo, nullptr);
if (FAILED(hr))
{
    // Report error
}

こちらも参照ください