次の方法で共有


IDebugModule3::GetSymbolInfo

シンボルを検索するパスと、各パスの検索結果のリストを取得します。

構文

int GetSymbolInfo(
    enum_SYMBOL_SEARCH_INFO_FIELDS dwFields,
    MODULE_SYMBOL_SEARCH_INFO[]    pinfo
);

パラメーター

dwFields
[入力] 入力される pInfo のフィールドを指定する SYMBOL_SEARCH_INFO_FIELDS 列挙型のフラグの組み合わせ。

pInfo
[出力] 指定された情報を使用してそのメンバーが満たされる MODULE_SYMBOL_SEARCH_INFO 構造体。 これが null 値の場合、このメソッドは E_INVALIDARG を返します。

戻り値

メソッドが成功した場合、S_OK を返します。それ以外の場合はエラー コードを返します。

Note

S_OK が返された場合でも、(MODULE_SYMBOL_SEARCH_INFO 構造体に) 返された文字列が空である可能性があります。 これは、返すべき検索情報がなかったことを示しています。

解説

MODULE_SYMBOL_SEARCH_INFO 構造体の bstrVerboseSearchInfo フィールドが空でない場合は、検索したパスとその検索結果のリストが含まれています。 リストはパス、その後に省略記号 ("...")、その後に結果が続く形で書式設定されています。 複数のパスの結果のペアがある場合、各ペアは "\r\n" (キャリッジリターン/ラインフィード) ペアで区切られます。 パターンは次のようになります。

<パス>...<結果>\r\n<パス>...<結果>\r\n<パス>...<結果>

最後のエントリには \r\n シーケンスがないことに注意してください。

この例では、このメソッドは 3 つのパスと 3 通りの異なる検索結果を返します。 各行の末尾はキャリッジリターン/ラインフィードのペアになります。 この出力例では、検索結果を単一の文字列として出力するだけです。

Note

"..." の直後から行末までのすべての部分が状態の結果です。

void ShowSymbolSearchResults(IDebugModule3 *pIDebugModule3)
{
    MODULE_SYMBOL_SEARCH_INFO ssi = { 0 };
    HRESULT hr;
    hr = pIDebugModule3->GetSymbolInfo(SSIF_VERBOSE_SEARCH_INFO,&ssi);
    if (SUCCEEDED(hr)) {
        CComBSTR searchInfo = ssi.bstrVerboseSearchInfo;
        if (searchInfo.Length() != 0) {
            std::wcout << (wchar_t *)(BSTR)searchInfo;
            std::wcout << std::endl;
        }
    }
}

c:\symbols\user32.pdb... ファイルが見つかりません。c:\winnt\symbols\user32.pdb... バージョンが一致しません。\symbols\symbols\user32.dll\0a8sd0ad8ad\user32.pdb... シンボルが読み込まれました。

関連項目