IDiaSession

デバッグ シンボルのクエリ コンテキストを提供します。

構文

IDiaSession : IUnknown

メソッド

次の表に、IDiaSession のメソッドを示します。

メソッド 説明
IDiaSession::get_loadAddress このシンボル ストアのシンボルに対応する実行可能ファイルの読み込みアドレスを取得します。 これは、put_loadAddress メソッドに渡された値と同じです。
IDiaSession::put_loadAddress このシンボル ストアのシンボルに対応する実行可能ファイルの読み込みアドレスを設定します。 注: このメソッドは、IDiaSession オブジェクトの取得時およびオブジェクトの使用を開始する前に呼び出すことが重要です。
IDiaSession::get_globalScope グローバル スコープへの参照を取得します。
IDiaSession::getEnumTables シンボル ストアに含まれる全テーブルの列挙子を取得します。
IDiaSession::getSymbolsByAddr 静的な場所にあるすべての名前付きシンボルの列挙子を取得します。
IDiaSession::findChildren 指定された親識別子の子で、名前とシンボルの種類に一致するものをすべて取得します。
IDiaSession::findSymbolByAddr 指定したアドレスを含む、またはそれに最も近い、指定したシンボルの種類を取得します。
IDiaSession::findSymbolByRVA 指定された相対仮想アドレス (RVA) を含む、またはそれに最も近い、指定されたシンボルの種類を取得します。
IDiaSession::findSymbolByVA 指定された仮想アドレス (VA) を含む、またはそれに最も近い、指定されたシンボルの種類を取得します。
IDiaSession::findSymbolByToken 指定されたメタデータ トークンを含むシンボルを取得します。
IDiaSession::symsAreEquiv 2 つのシンボルが等しいかどうかを確認します。
IDiaSession::symbolById シンボルを一意の識別子ごとに取得します。
IDiaSession::findSymbolByRVAEx 指定された相対仮想アドレスとオフセットを含む、またはそれに最も近い、指定されたシンボルの種類を取得します。
IDiaSession::findSymbolByVAEx 指定された仮想アドレスとオフセットを含む、またはそれに最も近い、指定されたシンボルの種類を取得します。
IDiaSession::findFile コンパイル単位と名前を指定してソース ファイルを取得します。
IDiaSession::findFileById ソース ファイルの識別子を指定してソース ファイルを取得します。
IDiaSession::findLines 指定されたコンパイル単位とソース ファイルの識別子内の行番号を取得します。
IDiaSession::findLinesByAddr 指定されたアドレスを含む、指定されたコンパイル単位内の行を取得します。
IDiaSession::findLinesByRVA 指定された相対仮想アドレスを含む、指定されたコンパイル単位内の行を取得します。
IDiaSession::findLinesByVA 指定されたアドレス範囲に含まれる行の行番号情報を検索します。
IDiaSession::findLinesByLinenum 指定されたコンパイル単位内の行をソース ファイルと行番号で取得します。
IDiaSession::findInjectedSource 属性プロバイダーまたはコンパイル プロセスの他のコンポーネントによりシンボル ストアに配置されたソースを取得します。
IDiaSession::getEnumDebugStreams デバッグ データ ストリームの列挙シーケンスを取得します。
IDiaSession::findInlineFramesByAddr 指定のアドレス上のすべてのインライン フレームをクライアントが反復処理できるようにする列挙子を取得します。
IDiaSession::findInlineFramesByRVA 指定された相対仮想アドレス (RVA) 上のすべてのインライン フレームをクライアントが反復処理できるようにする列挙型を取得します。
IDiaSession::findInlineFramesByVA 指定した仮想アドレス (VA) 上のすべてのインライン フレームをクライアントが反復処理できるようにする列挙子を取得します。
IDiaSession::findInlineeLines 指定の親シンボルで直接または間接的にインライン化されているすべての関数の行番号情報をクライアントが反復処理することを可能にする列挙体を取得します。
IDiaSession::findInlineeLinesByAddr 指定された親シンボルで直接または間接的にインライン化され、指定されたアドレス範囲内に含まれているすべての関数の行番号情報をクライアントが反復処理できるようにする列挙を取得します。
IDiaSession::findInlineeLinesByRVA 指定された親シンボルで直接または間接的にインライン化されていて、かつ指定された相対仮想アドレス (RVA) 内に含まれている、すべての関数の行番号情報をクライアントで反復処理するための列挙値を取得します。
IDiaSession::findInlineeLinesByVA 指定された親シンボルで直接または間接的にインライン化され、指定された仮想アドレス (VA) 内に含まれているすべての関数の行番号情報をクライアントが反復処理できるようにする列挙を取得します。
IDiaSession::findInlineeLinesByLinenum 指定されたソース ファイルと行番号に直接または間接的にインライン化されているすべての関数の行番号情報をクライアントが反復処理することを可能にする列挙体を取得します。
IDiaSession::findInlineesByName クライアントが反復処理できるように、指定された名前に一致するすべてのインライン関数の行番号情報の列挙を取得します。
IDiaSession::findSymbolsForAcceleratorPointerTag 親アクセラレータ スタブ関数で指定のタグ値が対応する変数のシンボルの列挙型を返します。
IDiaSession::findSymbolsByRVAForAcceleratorPointerTag 対応するタグ値を指定すると、このメソッドは、指定された相対仮想アドレスにある指定された親アクセラレータ スタブ関数に含まれているシンボルの列挙を返します。
IDiaSession::findAcceleratorInlineesByName 指定されたインライン関数名に対応するインライン フレームのシンボルの列挙を返します。
IDiaSession::findAcceleratorInlineesByLinenum 指定したソースの場所に対応するインライン フレームのシンボルの列挙子を返します。

解説

シンボルの仮想アドレス (VA) プロパティにアクセスできるようにするには、IDiaSession オブジェクトを作成した後で IDiaSession::put_loadAddress メソッドを呼び出すことが重要です。put_loadAddress メソッドにはゼロ以外の値を渡す必要があります。 読み込みアドレスは、デバッグ対象の実行可能ファイルが読み込まれたプログラムから取得されます。 たとえば、実行可能ファイルへのハンドルを指定すると、Win32 関数 GetModuleInformation を呼び出して、実行可能ファイルの読み込みアドレスを取得できます。

次の例では、DIA SDK の一般的な初期化の一環として IDiaSession インターフェイスを取得する方法を示します。

CComPtr<IDiaDataSource> pSource;
ComPtr<IDiaSession> psession;

void InitializeDIA(const char *szFilename)
{
    HRESULT hr = CoCreateInstance( CLSID_DiaSource,
                                   NULL,
                                   CLSCTX_INPROC_SERVER,
                                   __uuidof( IDiaDataSource ),
                                  (void **) &pSource);
    if (FAILED(hr))
    {
        Fatal("Could not CoCreate CLSID_DiaSource. Register msdia80.dll." );
    }
    wchar_t wszFilename[ _MAX_PATH ];
    mbstowcs( wszFilename,
              szFilename,
              sizeof( wszFilename )/sizeof( wszFilename[0] ) );
    if ( FAILED( pSource->loadDataFromPdb( wszFilename ) ) )
    {
        if ( FAILED( pSource->loadDataForExe( wszFilename, NULL, NULL ) ) )
        {
            Fatal( "loadDataFromPdb/Exe" );
        }
    }
    if ( FAILED( pSource->openSession( &psession ) ) )
    {
        Fatal( "openSession" );
    }
}

要件

ヘッダー: Dia2.h

ライブラリ: diaguids.lib

DLL: msdia80.dll

関連項目