次の方法で共有


IDiaSymbol

シンボル インスタンスのプロパティについて説明します。

IDiaSymbol : IUnknown

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

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

注意

シンボルは、シンボルの種類によって、これらのメソッドの一部に対してのみ意味を持つデータを返します。メソッドが 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

関数が、戻り値を使用するかどうかを示すフラグを取得します。

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

シンボルは、. AMP C++ のアクセラレータ用にコンパイルされたコード グループの共有ローカル変数に対応するかどうかを示すフラグを取得します。

IDiaSymbol::get_isAcceleratorPointerTagLiveRange

シンボルは、. AMP C++ のアクセラレータ用にコンパイルされたコードのポインター変数のタグのコンポーネントの シンボル定義の範囲 に対応するかどうかを示すフラグを取得します。 範囲のシンボル定義は、アドレスの範囲の変数の場所です。

IDiaSymbol::get_isAcceleratorStubFunction

シンボルが parallel_for_each の呼び出しに対応するアクセラレータ用にコンパイル シェーダーのトップレベルの関数シンボルに対応するかどうかを示します。

IDiaSymbol::get_isAggregated

データが複数のシンボルの集計の一部であるかどうかを示すフラグを取得します。

IDiaSymbol::get_isCTypes

シンボル ファイルは C の型が含まれているかどうかを示すフラグを取得します。

IDiaSymbol::get_isCVTCIL

モジュールが共通 Intermediate Language (CIL) からネイティブ コードへの変換されたかどうかを示すフラグを取得します。

IDiaSymbol::get_isDataAligned

ユーザー定義データ型の要素が特定の境界に配置されるかどうかを示すフラグを取得します。

IDiaSymbol::get_isHLSLData

このシンボルを Shader の言語の (HLSL) の高度なデータを表すかどうかを指定します。

IDiaSymbol::get_isHotpatchable

モジュールが /hotpatch (ホットパッチ可能なイメージの作成) コンパイラ スイッチを使用してコンパイルされたかどうかを示すフラグを取得します。

IDiaSymbol::get_isLTCG

マネージ コンパイル単位をリンカーの LTCG とリンクするかを示すフラグを取得します。

IDiaSymbol::get_isMatrixRowMajor

行列が行のメジャーかどうかを指定します。

IDiaSymbol::get_isMSILNetmodule

マネージ コンパイル単位が、. であるかどうかを示すフラグを取得します。 .netmodule (メタデータだけを含む)。

IDiaSymbol::get_isMultipleInheritance

かどうか、多重継承のデータ メンバーへの this のポインターの位置指定します。

IDiaSymbol::get_isNaked

関数に naked (C++) の属性があるかどうかを示すフラグを取得します。

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

行列または strided 配列のストライドを取得します。

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 を取得します。

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

シンボルの仮想テーブル シェイプ ID を取得します。

IDiaSymbol::get_volatileType

ユーザー定義データ型が揮発性であるかどうかを示すフラグを取得します。

解説

呼び出し元のメモ

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

使用例

この例は、特定の相対仮想アドレスでの関数のローカル変数を表示する方法を示しています。 異なる型のシンボルを相互に関連付ける方法も示します。

注意

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

参照

関連項目

IDiaEnumSymbolsByAddr

IDiaEnumSymbols

IDiaSession

シンボル型のクラス階層

コンパイル単位

その他の技術情報

インターフェイス (Debug Interface Access SDK)

シンボルとシンボル タグ