IDiaSymbol

シンボル インスタンスのプロパティを記述します。

構文

IDiaSymbol : IUnknown

メソッド (アルファベット順)

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

Note

シンボルは、シンボルの型に応じて、これらのメソッドの一部でのみ意味のあるデータを返します。 メソッドから S_OK が返された場合、そのメソッドは意味のあるデータを返しています。

メソッド 説明
IDiaSymbol::findChildren シンボルのすべての子を取得します。
IDiaSymbol::findChildrenEx シンボルの子を取得します。 このメソッドは、IDiaSymbol::findChildren の拡張バージョンです。
IDiaSymbol::findChildrenExByAddr 指定されたアドレスにあるシンボルの有効な子を取得します。
IDiaSymbol::findChildrenExByRVA 指定された相対仮想アドレス (RVA) にあるシンボルの有効な子を取得します。
IDiaSymbol::findChildrenExByVA 指定された仮想アドレスにあるシンボルの有効な子を取得します。
IDiaSymbol::findInlineFramesByAddr 指定のアドレス上のすべてのインライン フレームをクライアントが反復処理できるようにする列挙子を取得します。
IDiaSymbol::findInlineFramesByRVA 指定された相対仮想アドレス (RVA) 上のすべてのインライン フレームをクライアントが反復処理できるようにする列挙型を取得します。
IDiaSymbol::findInlineFramesByVA 指定した仮想アドレス (VA) 上のすべてのインライン フレームをクライアントが反復処理できるようにする列挙子を取得します。
IDiaSymbol::findInlineeLines このシンボルで直接または間接的にインライン化されているすべての関数の行番号情報をクライアントが反復処理することを可能にする列挙型を取得します。
IDiaSymbol::findInlineeLinesByAddr 指定されたアドレス範囲内でこのシンボルに直接または間接的にインライン化されているすべての関数の行番号情報をクライアントが反復処理できるようにする列挙型を取得します。
IDiaSymbol::findInlineeLinesByRVA 指定された相対仮想アドレス (RVA) 内でこのシンボルに直接または間接的にインライン化されているすべての関数の行番号情報をクライアントが反復できるようにする列挙を取得します。
IDiaSymbol::findInlineeLinesByVA 指定された仮想アドレス (VA) 内でこのシンボルに直接または間接的にインライン化されているすべての関数の行番号情報をクライアントが反復できるようにする列挙を取得します。
IDiaSymbol::findSymbolsByRVAForAcceleratorPointerTag 対応するタグ値を指定すると、このメソッドは、指定された相対仮想アドレスにあるこのスタブ関数に含まれているシンボルの列挙を返します。
IDiaSymbol::findSymbolsForAcceleratorPointerTag C++ AMP スタブ関数内のアクセラレータ ポインター タグの数を返します。
IDiaSymbol::get_acceleratorPointerTags C++ AMP アクセラレータ スタブ関数に対応するすべてのアクセラレータ ポインター タグ値を返します。
IDiaSymbol::get_access クラス メンバーのアクセス修飾子を取得します。
IDiaSymbol::get_addressOffset アドレスの場所のオフセット部分を取得します。
IDiaSymbol::get_addressSection アドレスの場所のセクション部分を取得します。
IDiaSymbol::get_addressTaken 別のシンボルがこのアドレスを参照しているかどうかを示すフラグを取得します。
IDiaSymbol::get_age プログラム データベースの経過期間値を取得します。
IDiaSymbol::get_arrayIndexType 配列インデックスの型のシンボル識別子を取得します。
IDiaSymbol::get_arrayIndexTypeId シンボルの配列のインデックスの種類の識別子を取得します。
IDiaSymbol::get_backEndMajor バックエンド メジャー バージョン番号を取得します。
IDiaSymbol::get_backEndMinor バックエンド マイナー バージョン番号を取得します。
IDiaSymbol::get_backEndBuild バックエンド ビルド番号を取得します。
IDiaSymbol::get_baseDataOffset 基本データ オフセットを取得します。
IDiaSymbol::get_baseDataSlot 基本データ スロットを取得します。
IDiaSymbol::get_baseSymbol ポインターの基になるシンボルを取得します。
IDiaSymbol::get_baseSymbolId ポインターの基になるシンボル ID を取得します。
IDiaSymbol::get_baseType 単純型の型タグを取得します。
IDiaSymbol::get_bitPosition 場所のビット位置を取得します。
IDiaSymbol::get_builtInKind HLSL 型の組み込みの種類を取得します。
IDiaSymbol::get_callingConvention メソッドの呼び出し規則のインジケーターを返します。
IDiaSymbol::get_classParent シンボルのクラスの親への参照を取得します。
IDiaSymbol::get_classParentId シンボルのクラスの親識別子を取得します。
IDiaSymbol::get_code シンボルがコード アドレスを参照しているかどうかを示すフラグを取得します。
IDiaSymbol::get_compilerGenerated シンボルがコンパイラで生成されたかどうかを示すフラグを取得します。
IDiaSymbol::get_compilerName コンパイル単位の作成に使用されるコンパイラの名前を取得します。
IDiaSymbol::get_constructor ユーザー定義データ型にコンストラクターがあるかどうかを示すフラグを取得します。
IDiaSymbol::get_container このシンボルの含んでいるシンボルを取得します。
IDiaSymbol::get_constType ユーザー定義データ型が定数であるかどうかを示すフラグを取得します。
IDiaSymbol::get_count リストまたは配列内の項目の数を取得します。
IDiaSymbol::get_countLiveRanges ローカル シンボルに関連付けられている有効なアドレス範囲の数を取得します。
IDiaSymbol::get_customCallingConvention 関数でカスタム呼び出し規則を使用しているかどうかを示すフラグを取得します。
IDiaSymbol::get_dataBytes OEM のシンボルのデータ バイトを取得します。
IDiaSymbol::get_dataKind データ シンボルの変数の分類を取得します。
IDiaSymbol::get_editAndContinueEnabled コンパイルされたプログラムまたはユニットのエディット コンティニュ機能を記述するフラグを取得します。
IDiaSymbol::get_farReturn 関数で far return を使用しているかどうかを示すフラグを取得します。
IDiaSymbol::get_frontEndMajor フロントエンド メジャー バージョン番号を取得します。
IDiaSymbol::get_frontEndMinor フロントエンド マイナー バージョン番号を取得します。
IDiaSymbol::get_frontEndBuild フロントエンド ビルド番号を取得します。
IDiaSymbol::get_function パブリック シンボルが関数を参照しているかどうかを示すフラグを取得します。
IDiaSymbol::get_guid シンボルの GUID を取得します。
IDiaSymbol::get_hasAlloca 関数に alloca の呼び出しが含まれているかどうかを示すフラグを取得します。
IDiaSymbol::get_hasAssignmentOperator ユーザー定義データ型に代入演算子が定義されているかどうかを示すフラグを取得します。
IDiaSymbol::get_hasCastOperator ユーザー定義データ型にキャスト演算子が定義されているかどうかを示すフラグを取得します。
IDiaSymbol::get_hasDebugInfo コンパイル単位にデバッグ情報が含まれているかどうかを示すフラグを取得します。
IDiaSymbol::get_hasEH 関数に C++ スタイルの例外ハンドラーがあるかどうかを示すフラグを取得します。
IDiaSymbol::get_hasEHa 関数に非同期例外ハンドラーがあるかどうかを示すフラグを取得します。
IDiaSymbol::get_hasInlAsm 関数にインライン アセンブリがあるかどうかを示すフラグを取得します。
IDiaSymbol::get_hasLongJump 関数に longjmp コマンド (C スタイルの例外処理の一部) が含まれているかどうかを示すフラグを取得します。
IDiaSymbol::get_hasManagedCode モジュールにマネージド コードが含まれているかどうかを示すフラグを取得します。
IDiaSymbol::get_hasNestedTypes ユーザー定義データ型に入れ子にされた型定義があるかどうかを示すフラグを取得します。
IDiaSymbol::get_hasSecurityChecks 関数またはコンパイル単位に、(/GS (バッファー セキュリティ チェック) コンパイラ スイッチを使用して) セキュリティ チェックがコンパイルされているかどうかを示すフラグを取得します。
IDiaSymbol::get_hasSEH 関数に Win32 スタイルの構造化例外処理があるかどうかを示すフラグを取得します。
IDiaSymbol::get_hasSetJump 関数に setjmp コマンドが含まれているかどうかを示すフラグを取得します。
IDiaSymbol::get_indirectVirtualBaseClass ユーザー定義データ型が間接仮想基底クラスであるかどうかを示すフラグを取得します。
IDiaSymbol::get_InlSpec 関数がインライン属性でマークされているかどうかを示すフラグを取得します。
IDiaSymbol::get_interruptReturn 関数に割り込み命令からの戻りがあるかどうかを示すフラグを取得します。
IDiaSymbol::get_intro 関数が基底クラスの仮想関数であるかどうかを示すフラグを取得します。
IDiaSymbol::get_isAcceleratorGroupSharedLocal シンボルが C++ AMP Accelerator 用にコンパイルされたコード内のグループ共有ローカル変数に対応するかどうかを示すフラグを取得します。
IDiaSymbol::get_isAcceleratorPointerTagLiveRange シンボルが C++ AMP アクセラレータ用にコンパイルされたコードに含まれるポインター変数のタグ コンポーネントの "定義範囲シンボル" に対応しているかどうかを示すフラグを取得します。 定義範囲シンボルは、アドレス範囲の変数の場所です。
IDiaSymbol::get_isAcceleratorStubFunction シンボルが、parallel_for_each 呼び出しに対応するアクセラレータ用にコンパイルされたシェーダーの最上位関数シンボルに対応しているかどうかを示します。
IDiaSymbol::get_isAggregated データが多数のシンボルの集計の一部であるかどうかを示すフラグを取得します。
IDiaSymbol::get_isCTypes シンボル ファイルに C 型が含まれているかどうかを示すフラグを取得します。
IDiaSymbol::get_isCVTCIL モジュールが共通中間言語 (CIL) からネイティブ コードに変換されたかどうかを示すフラグを取得します。
IDiaSymbol::get_isDataAligned ユーザー定義データ型の要素が特定の境界に整列されているかどうかを示すフラグを取得します。
IDiaSymbol::get_isHLSLData このシンボルが、ハイレベル シェーディング ランゲージ (HLSL) データを表すかどうかを示します。
IDiaSymbol::get_isHotpatchable モジュールが /hotpatch (ホットパッチ可能なイメージの作成) コンパイラ スイッチを使用してコンパイルされたかどうかを示すフラグを取得します。
IDiaSymbol::get_isLTCG マネージド コンパイル単位がリンカーの LTCG にリンクされているかどうかを示すフラグを取得します。
IDiaSymbol::get_isMatrixRowMajor マトリックスが行優先であるかどうかを指定します。
IDiaSymbol::get_isMSILNetmodule マネージド コンパイル単位が (メタデータのみを含む) .netmodule であるかどうかを示すフラグを取得します。
IDiaSymbol::get_isMultipleInheritance this ポインターが、多重継承を使用するデータ メンバーを指しているかどうかを示します。
IDiaSymbol::get_isNaked 関数に naked 属性があるかどうかを示すフラグを取得します。
IDiaSymbol::get_isOptimizedAway この変数を最適化により削除するかどうかを指定します。
IDiaSymbol::get_isPointerBasedOnSymbolValue this ポインターがシンボル値に基づいているかどうかを指定します。
IDiaSymbol::get_isPointerToDataMember このシンボルがデータ メンバーへのポインターであるかどうかを示します。
IDiaSymbol::get_isPointerToMemberFunction このシンボルがメンバー関数へのポインターであるかどうかを示します。
IDiaSymbol::get_isReturnValue 変数に戻り値を格納するかどうかを示します。
IDiaSymbol::get_isSdl モジュールが /SDL オプションを使用してコンパイルされているかどうかを指定します。
IDiaSymbol::get_isSingleInheritance this ポインターが、単一継承を使用するデータ メンバーを指しているかどうかを示します。
IDiaSymbol::get_isSplitted データが個々のシンボルの集計に分割されているかどうかを示すフラグを取得します。
IDiaSymbol::get_isStatic 関数またはサンク レイヤーが静的であるかどうかを示すフラグを取得します。
IDiaSymbol::get_isStripped プライベート シンボルがシンボル ファイルから削除されているかどうかを示すフラグを取得します。
IDiaSymbol::get_isVirtualInheritance this ポインターが、仮想継承を使用するデータ メンバーを指しているかどうかを示します。
IDiaSymbol::get_language ソースの言語を取得します。
IDiaSymbol::get_length このシンボルによって表されるオブジェクトで使用されるメモリのバイト数を取得します。
IDiaSymbol::get_lexicalParent シンボルの構文上の親への参照を取得します。
IDiaSymbol::get_lexicalParentId シンボルの言葉による親識別子を取得します。
IDiaSymbol::get_libraryName オブジェクトの読み込み元であったライブラリまたはオブジェクト ファイルのファイル名を取得します。
IDiaSymbol::get_liveRangeLength ローカル シンボルが有効となるアドレス範囲の長さを返します。
IDiaSymbol::get_liveRangeStartAddressSection ローカル シンボルが有効な開始アドレス範囲のセクション部分を返します。
IDiaSymbol::get_liveRangeStartAddressOffset ローカル シンボルが有効な開始アドレス範囲のオフセット部分を返します。
IDiaSymbol::get_liveRangeStartRelativeVirtualAddress ローカル シンボルが有効なアドレス範囲の先頭を返します。
IDiaSymbol::get_locationType データ シンボルの場所の種類を取得します。
IDiaSymbol::get_lowerBound FORTRAN 配列次元の下限を取得します。
IDiaSymbol::get_lowerBoundId FORTRAN 配列次元の下限のシンボル識別子を取得します。
IDiaSymbol::get_machineType ターゲット CPU の種類を取得します。
IDiaSymbol::get_managed シンボルがマネージド コードを参照しているかどうかを示すフラグを取得します。
IDiaSymbol::get_memorySpaceKind メモリ領域の種類を取得します。
IDiaSymbol::get_msil シンボルが Microsoft Intermediate Language (MSIL) コードを参照しているかどうかを示すフラグを取得します。
IDiaSymbol::get_name シンボルの名前を取得します。
IDiaSymbol::get_nested ユーザー定義データ型が入れ子になっているかどうかを示すフラグを取得します。
IDiaSymbol::get_noInline 関数が noinline 属性でマークされているかどうかを示すフラグを取得します。
IDiaSymbol::get_noReturn 関数が noreturn 属性で宣言されているかどうかを示すフラグを取得します。
IDiaSymbol::get_noStackOrdering スタック バッファー チェックの一環としてスタックの順序付けを実行できなかったかどうかを示すフラグを取得します。
IDiaSymbol::get_notReached 関数またはラベルに到達することがないかどうかを示すフラグを取得します。
IDiaSymbol::get_numberOfAcceleratorPointerTags C++ AMP スタブ関数内のアクセラレータ ポインター タグの数を返します。
IDiaSymbol::get_numberOfModifiers 元の型に適用される修飾子の数を取得します。
IDiaSymbol::get_numberOfRegisterIndices レジスタ インデックスの数を取得します。
IDiaSymbol::get_numberOfRows マトリックス内の行の数を取得します。
IDiaSymbol::get_numberOfColumns マトリックス内の列の数を取得します。
IDiaSymbol::get_objectFileName オブジェクト ファイル名を取得します。
IDiaSymbol::get_objectPointerType クラス メソッドのオブジェクト ポインターの型を取得します。
IDiaSymbol::get_oemId シンボルの oemId 値を取得します。
IDiaSymbol::get_oemSymbolId シンボルの oemSymbolId 値を取得します。
IDiaSymbol::get_offset シンボル位置のオフセットを取得します。
IDiaSymbol::get_optimizedCodeDebugInfo 関数またはラベルに、最適化されたコードとデバッグ情報が含まれているかどうかを示すフラグを取得します。
IDiaSymbol::get_overloadedOperator ユーザー定義データ型にオーバーロードされた演算子があるかどうかを示すフラグを取得します。
IDiaSymbol::get_packed ユーザー定義データ型がパックされているかどうかを示すフラグを取得します。
IDiaSymbol::get_platform プログラムまたはコンパイル単位がコンパイルされたプラットフォームの種類を取得します。
IDiaSymbol::get_pure 関数が純粋仮想であるかどうかを示すフラグを取得します。
IDiaSymbol::get_rank FORTRAN 多次元配列のランクを取得します。
IDiaSymbol::get_reference ポインターの型が参照であるかどうかを示すフラグを取得します。
IDiaSymbol::get_registerId 場所のレジスタ指定子を取得します。
IDiaSymbol::get_registerType レジスタの種類を取得します。
IDiaSymbol::get_relativeVirtualAddress 場所の相対仮想アドレス (RVA) を取得します。
IDiaSymbol::get_restrictedType this ポインターに制限ありのフラグが設定されているかどうかを示します。
IDiaSymbol::get_samplerSlot サンプラー スロットを取得します。
IDiaSymbol::get_scoped ユーザー定義データ型が非グローバル構文スコープに出現するかどうかを示すフラグを取得します。
IDiaSymbol::get_signature シンボルのシグネチャ値を取得します。
IDiaSymbol::get_sizeInUdt ユーザー定義型のメンバーのサイズを取得します。
IDiaSymbol::get_slot 位置のスロット番号を取得します。
IDiaSymbol::get_sourceFileName ソース ファイルのファイル名を取得します。
IDiaSymbol::getSrcLineOnTypeDefn 指定のユーザー定義型が定義されている場所を示すソース ファイルと行番号を取得します。
IDiaSymbol::get_stride 行列またはストライド配列のストライドを取得します。
IDiaSymbol::get_subType サブタイプを取得します。
IDiaSymbol::get_subTypeId サブ タイプの ID を取得します。
IDiaSymbol::get_symbolsFileName シンボルの読み込み元のファイルの名前を取得します。
IDiaSymbol::get_symIndexId 一意のシンボル識別子を取得します。
IDiaSymbol::get_symTag シンボルの種類の分類子を取得します。
IDiaSymbol::get_targetOffset サンク ターゲットのオフセット セクションを取得します。
IDiaSymbol::get_targetRelativeVirtualAddress サンク ターゲットの相対仮想アドレス (RVA) を取得します。
IDiaSymbol::get_targetSection サンク ターゲットのアドレス セクションを取得します。
IDiaSymbol::get_targetVirtualAddress サンク ターゲットの仮想アドレス (VA) を取得します。
IDiaSymbol::get_textureSlot テクスチャ スロットを取得します。
IDiaSymbol::get_thisAdjust メソッドの論理 this adjustor を取得します。
IDiaSymbol::get_thunkOrdinal 関数のサンク型を取得します。
IDiaSymbol::get_timeStamp 基になる実行可能ファイルのタイムスタンプを取得します。
IDiaSymbol::get_token マネージド関数または変数のメタデータ トークンを取得します。
IDiaSymbol::get_type 関数シグネチャへの参照を取得します。
IDiaSymbol::get_typeId シンボルの型識別子を取得します。
IDiaSymbol::get_types このシンボルについて、コンパイラ固有の型の値の配列を取得します。
IDiaSymbol::get_typeIds このシンボルについてコンパイラ固有の型識別子の値の配列を取得します。
IDiaSymbol::get_uavSlot uav スロットを取得します。
IDiaSymbol::get_udtKind さまざまなユーザー定義型 (UDT) を取得します。
IDiaSymbol::get_unalignedType ユーザー定義データ型が整列されていないかどうかを示すフラグを取得します。
IDiaSymbol::get_undecoratedName C++ の装飾 (リンケージ) 名の非装飾名を取得します。
IDiaSymbol::get_undecoratedNameEx 拡張フィールドの値に基づいて非装飾名を取得する、get_undecoratedName メソッドの拡張機能。
IDiaSymbol::get_unmodifiedTypeId 元の (変更されていない) 型の ID を取得します。
IDiaSymbol::get_upperBound FORTRAN 配列次元の上限を取得します。
IDiaSymbol::get_upperBoundId FORTRAN 配列次元の上限のシンボル識別子を取得します。
IDiaSymbol::get_value 定数の値を取得します。
IDiaSymbol::get_virtual 関数が仮想であるかどうかを示すフラグを取得します。
IDiaSymbol::get_virtualAddress 場所の仮想アドレス (VA) を取得します。
IDiaSymbol::get_virtualBaseClass ユーザー定義データ型が仮想基底クラスであるかどうかを示すフラグを取得します。
IDiaSymbol::get_virtualBaseDispIndex 仮想ベースの変位テーブルのインデックスを取得します。
IDiaSymbol::get_virtualBaseOffset 仮想関数の仮想関数テーブル内のオフセットを取得します。
IDiaSymbol::get_virtualBasePointerOffset 仮想基本ポインターのオフセットを取得します。
IDiaSymbol::get_virtualBaseTableType 仮想ベース テーブル ポインターの型を取得します。
IDiaSymbol::get_virtualTableShape ユーザー定義型の仮想テーブルの種類のシンボル インターフェイスを取得します。
IDiaSymbol::get_virtualTableShapeId シンボルの仮想テーブル図形識別子を取得します。
IDiaSymbol::get_volatileType ユーザー定義データ型が揮発性かどうかを示すフラグを取得します。

解説

呼び出し元に関する注意事項

このインターフェイスを取得するには、次のいずれかのメソッドを呼び出します。

この例は、指定された相対仮想アドレスにある関数のローカル変数を表示する方法を示しています。 また、さまざまな型のシンボルが相互にどのように関連しているのかも示しています。

Note

CDiaBSTR は、BSTR をラップし、インスタンス化がスコープ外になったときに文字列の解放を自動的に処理するクラスです。

void DumpLocalVars( DWORD rva, IDiaSession *pSession )
{
    CComPtr< IDiaSymbol > pBlock;
    if ( FAILED( psession->findSymbolByRVA( rva, SymTagBlock, &pBlock ) ) )
    {
        Fatal( "Failed to find symbols by RVA" );
    }
    CComPtr< IDiaSymbol > pscope;
    for ( ; pBlock != NULL; )
    {
        CComPtr< IDiaEnumSymbols > pEnum;
        // local data search
        if ( FAILED( pBlock->findChildren( SymTagNull, NULL, nsNone, &pEnum ) ) )
        {
            Fatal( "Local scope findChildren failed" );
        }
        CComPtr< IDiaSymbol > pSymbol;
        DWORD tag;
        DWORD celt;
        while ( pEnum != NULL &&
                SUCCEEDED( pEnum->Next( 1, &pSymbol, &celt ) ) &&
                celt == 1)
        {
            pSymbol->get_symTag( &tag );
            if ( tag == SymTagData )
            {
                CDiaBSTR name;
                DWORD    kind;
                pSymbol->get_name( &name );
                pSymbol->get_dataKind( &kind );
                if ( name != NULL )
                    wprintf_s( L"\t%s (%s)\n", name, szDataKinds[ kind ] );
            }
            else if ( tag == SymTagAnnotation )
            {
                CComPtr< IDiaEnumSymbols > pValues;
                // local data search
                wprintf_s( L"\tAnnotation:\n" );
                if ( FAILED( pSymbol->findChildren( SymTagNull, NULL, nsNone, &pValues ) ) )
                    Fatal( "Annotation findChildren failed" );
                pSymbol = NULL;
                while ( pValues != NULL &&
                        SUCCEEDED( pValues->Next( 1, &pSymbol, &celt ) ) &&
                        celt == 1 )
                {
                    CComVariant value;
                    if ( pSymbol->get_value( &value ) != S_OK )
                        Fatal( "No value for annotation data." );
                    wprintf_s( L"\t\t%ws\n", value.bstrVal );
                    pSymbol = NULL;
                }
            }
            pSymbol = NULL;
        }
        pBlock->get_symTag( &tag );
        if ( tag == SymTagFunction )    // stop when at function scope
            break;
        // move to lexical parent
        CComPtr< IDiaSymbol > pParent;
        if ( SUCCEEDED( pBlock->get_lexicalParent( &pParent ) )
            && pParent != NULL ) {
            pBlock = pParent;
        }
        else
        {
            Fatal( "Finding lexical parent failed." );
        }
    };
}

要件

Header: Dia2.h

ライブラリ: diaguids.lib

DLL: msdia80.dll

関連項目