IDiaDataSource::loadDataFromMiscInfo
.exe
/.dll
ファイルに関連付けられているデバッグ データを開いて準備します。
構文
HRESULT loadDataFromMiscInfo (
LPCOLESTR executable,
LPCOLESTR searchPath,
DWORD timeStampExe,
DWORD timeStampDbg,
DWORD sizeOfExe,
DWORD cbMiscInfo,
BYTE* pbMiscInfo,
IUnknown* pCallback
);
パラメーター
executable
[in] .exe
または .dll
ファイルへのパス。
searchPath
[in]デバッグ データを検索するための代替パス。 複数のパスはセミコロンで区切る必要があります。 パスには、末尾の \
が含まれている場合があります。
timeStampExe
[in]実行可能イメージの代替タイムスタンプ。
timeStampDbg
[in]デバッグ情報の代替タイムスタンプ。
sizeOfExe
[in]実行可能イメージの代替サイズ (バイト単位)。
cbMiscInfo
[in] pbMiscInfo
パラメーターのサイズ (バイト単位)。
pbMiscInfo
[in]ファイル名にデバッグ情報を提供する IMAGE_DEBUG_MISC
形式の代替デバッグ ヘッダー。
pCallback
[in]IDiaLoadCallback
、IDiaLoadCallback2
、IDiaReadExeAtOffsetCallback
、IDiaReadExeAtRVACallback
インターフェイスなどのデバッグ コールバック インターフェイスをサポートするオブジェクトのIUnknown
インターフェイス。
戻り値
成功した場合は、S_OK
を返します。それ以外の場合は、エラー コードを返します。 次の表に、このメソッドで発生する可能性のあるエラー コードの一部を示します。
値 | 説明 |
---|---|
E_PDB_NOT_FOUND |
ファイルを開くことができなかったか、ファイルの形式が無効です。 |
E_PDB_FORMAT |
古い形式のファイルにアクセスしようとしました。 |
E_PDB_INVALID_SIG |
シグネチャが一致しません。 |
E_PDB_INVALID_AGE |
経過期間が一致しません。 |
E_INVALIDARG |
無効なパラメーター。 |
E_UNEXPECTED |
データ ソースは既に準備されています。 |
解説
pbMiscInfo は、実行可能イメージ内のデバッグ情報を置き換え、関連するデバッグ データの場所に名前を付けます。 タイムスタンプとサイズは、デバッグ情報と一致するために使用されます。
シンボル サーバーからデバッグ データを読み込む場合、 symsrv.dll は、ユーザーのアプリケーションまたは msdia140.dll がインストールされているのと同じディレクトリに存在するか、システム ディレクトリに存在する必要があります。
このメソッドは、デバッグ データを検索して準備します。 必要に応じて、コールバックを使用して、検索の進行状況をレポートおよび制御できます。 たとえば、 IDiaLoadCallback::NotifyDebugDir
は、 IDiaDataSource::loadDataForExe
メソッドがデバッグ ディレクトリを検索して処理するときに呼び出されます。
IDiaReadExeAtOffsetCallback
インターフェイスとIDiaReadExeAtRVACallback
インターフェイスを使用すると、クライアント アプリケーションは、標準ファイル I/O を介してファイルに直接アクセスできない場合に実行可能ファイルからデータを読み取るための代替方法を提供できます。
検証なしで .pdb ファイルを読み込むには、 IDiaDataSource::loadDataFromPdb
メソッドを使用します。
特定の条件に対して .pdb ファイルを検証するには、 IDiaDataSource::loadAndValidateDataFromPdb
メソッドを使用します。
.pdb ファイルをメモリから直接読み込むには、 IDiaDataSource::loadDataFromIStream
メソッドを使用します。
読み込まずに .pdb ファイルを検証するには、 IDiaDataSourceEx::ValidatePdb メソッドを使用します。
例
DWORD dwTimeStamp = 0x3BF1C039;
DWORD dwSizeImage = 0x0000A000;
BYTE pbMiscInfo[0x110] = {
...
};
HRESULT hr = pSource->loadDataFromMiscInfo( L"myprog.exe", L".\debug", dwTimeStamp, dwTimeStamp, dwSizeOfImage, sizeof(pbMiscInfo), pbMiscInfo, nullptr);
if (FAILED(hr))
{
// Report error
}