IDiaSymbol
シンボル インスタンスのプロパティについて説明します。
IDiaSymbol : IUnknown
メソッド (アルファベット順)
IDiaSymbol のメソッドを次の表に示します。
注意
シンボルは、シンボルの種類によって、これらのメソッドの一部に対してのみ意味を持つデータを返します。メソッドが S_OK を返す場合、そのメソッドは有効なデータを返しました。
メソッド |
説明 |
---|---|
シンボルのすべての子を取得します。 |
|
子シンボルを取得します。 このメソッドは、IDiaSymbol::findChildren の拡張バージョンです。 |
|
指定されたアドレスにある有効なシンボルの子を取得します。 |
|
指定された相対仮想アドレス (RVA) にある有効なシンボルの子を取得します。 |
|
指定された仮想アドレスにある有効なシンボルの子を取得します。 |
|
クライアントが特定のアドレスのインライン フレームすべての反復処理できる列挙型を取得します。 |
|
クライアントが指定した相対仮想アドレス (RVA) のインライン フレームすべての反復処理できる列挙型を取得します。 |
|
クライアントが指定された仮想アドレス (VA) のインライン フレームすべての反復処理できる列挙型を取得します。 |
|
クライアントが、直接または間接的にこのシンボルのすべてのインライン関数の行番号情報によって、反復処理できる列挙型を取得します。 |
|
クライアントが、直接または間接的にインライン指定したアドレスの範囲内にこのシンボルのすべての関数行番号情報によって、反復処理できる列挙型を取得します。 |
|
クライアントが、直接または間接的にインライン指定した相対仮想アドレス (RVA) では、このシンボルのすべての関数行番号情報によって、反復処理できる列挙型を取得します。 |
|
クライアントが、直接または間接的にインライン指定された仮想アドレス (VA) では、このシンボルのすべての関数行番号情報によって、反復処理できる列挙型を取得します。 |
|
対応するタグの値の場合、このメソッドは、指定した相対仮想アドレスのスタブこの関数に含まれるシンボルの列挙体を返します。 |
|
C ++. AMP のスタブ関数のアクセラレータのポインターのタグの数を返します。 |
|
C ++. AMP アクセラレータのスタブ関数に対応するすべてのアクセラレータのポインターのタグの値を返します。 |
|
クラス メンバーのアクセス修飾子を取得します。 |
|
アドレス位置のオフセット部分を取得します。 |
|
アドレス位置のセクション部分を取得します。 |
|
このアドレスを別のシンボルが参照しているかどうかを示すフラグを取得します。 |
|
プログラム データベースの年齢値を取得します。 |
|
配列インデックス型のシンボル識別子を取得します。 |
|
シンボルの配列インデックス型識別子を取得します。 |
|
バックエンド メジャー バージョン番号を取得します。 |
|
バックエンド マイナー バージョン番号を取得します。 |
|
バックエンド ビルド番号を取得します。 |
|
基本のデータのオフセットを取得します。 |
|
基本データ スロットを取得します。 |
|
ポインターが基づくシンボルを取得します。 |
|
ポインターが基づくシンボル ID を取得します。 |
|
単純型の型タグを取得します。 |
|
場所のビット位置を取得します。 |
|
組み込みの種類の HLSL の型を取得します。 |
|
メソッドの呼び出し規約のインジケーターを返します。 |
|
シンボルのクラスの親への参照を取得します。 |
|
シンボルのクラスの親識別子を取得します。 |
|
シンボルがコード アドレスを参照しているかどうかを示すフラグを取得します。 |
|
シンボルがコンパイラによって生成されたかどうかを示すフラグを取得します。 |
|
コンパイル単位の作成に使用されるコンパイラの名前を取得します。 |
|
ユーザー定義データ型にコンストラクターが含まれるかどうかを示すフラグを取得します。 |
|
このシンボルを含むシンボルを取得します。 |
|
ユーザー定義データ型が定数であるかどうかを示すフラグを取得します。 |
|
リストまたは配列内の項目の数を取得します。 |
|
ローカル シンボルに関連付けられている有効なアドレス範囲の数を取得します。 |
|
関数がカスタム呼び出し規約を使用するかどうかを示すフラグを取得します。 |
|
OEM シンボルのデータ バイトを取得します。 |
|
データ シンボルの変数分類を取得します。 |
|
コンパイルされたプログラムまたは単位のエディット コンティニュ機能を記述したフラグを取得します。 |
|
関数が、戻り値を使用するかどうかを示すフラグを取得します。 |
|
フロントエンド メジャー バージョン番号を取得します。 |
|
フロントエンド マイナー バージョン番号を取得します。 |
|
フロントエンド ビルド番号を取得します。 |
|
パブリック シンボルが関数を参照しているかどうかを示すフラグを取得します。 |
|
シンボルの GUID を取得します。 |
|
関数が allocaの呼び出しが含まれているかどうかを示すフラグを取得します。 |
|
ユーザー定義データ型に代入演算子が定義されているかどうかを示すフラグを取得します。 |
|
ユーザー定義データ型にキャスト演算子が定義されているかどうかを示すフラグを取得します。 |
|
コンパイル単位がデバッグ情報を含めるかどうかを示すフラグを取得します。 |
|
関数に C ++. のスタイルの例外ハンドラーがあるかどうかを示すフラグを取得します。 |
|
関数に非同期例外のハンドラーがあるかどうかを示すフラグを取得します。 |
|
関数のインライン アセンブリがあるかどうかを示すフラグを取得します。 |
|
関数が longjmp のコマンド (C スタイルの例外処理の一部) が含まれているかどうかを示すフラグを取得します。 |
|
モジュールにマネージ コードが含まれるかどうかを示すフラグを取得します。 |
|
ユーザー定義データ型に入れ子になった型定義が含まれるかどうかを示すフラグを取得します。 |
|
関数またはコンパイル単位はコンパイル セキュリティ チェックがあるかどうかを示すフラグを取得します ( /GS (バッファーのセキュリティ チェック) コンパイラのスイッチです)。 |
|
関数に WIN32 スタイルの構造化例外処理があるかどうかを示すフラグを取得します。 |
|
関数が setjmp のコマンドが含まれているかどうかを示すフラグを取得します。 |
|
ユーザー定義データ型が間接仮想基本クラスであるかどうかを示すフラグを取得します。 |
|
インライン関数が属性でマークされているかどうかを示すフラグを取得します。 |
|
割り込み関数に命令から制御があるかどうかを示すフラグを取得します。 |
|
関数が基本クラスの仮想関数であるかどうかを示すフラグを取得します。 |
|
シンボルは、. AMP C++ のアクセラレータ用にコンパイルされたコード グループの共有ローカル変数に対応するかどうかを示すフラグを取得します。 |
|
シンボルは、. AMP C++ のアクセラレータ用にコンパイルされたコードのポインター変数のタグのコンポーネントの シンボル定義の範囲 に対応するかどうかを示すフラグを取得します。 範囲のシンボル定義は、アドレスの範囲の変数の場所です。 |
|
シンボルが parallel_for_each の呼び出しに対応するアクセラレータ用にコンパイル シェーダーのトップレベルの関数シンボルに対応するかどうかを示します。 |
|
データが複数のシンボルの集計の一部であるかどうかを示すフラグを取得します。 |
|
シンボル ファイルは C の型が含まれているかどうかを示すフラグを取得します。 |
|
モジュールが共通 Intermediate Language (CIL) からネイティブ コードへの変換されたかどうかを示すフラグを取得します。 |
|
ユーザー定義データ型の要素が特定の境界に配置されるかどうかを示すフラグを取得します。 |
|
このシンボルを Shader の言語の (HLSL) の高度なデータを表すかどうかを指定します。 |
|
モジュールが /hotpatch (ホットパッチ可能なイメージの作成) コンパイラ スイッチを使用してコンパイルされたかどうかを示すフラグを取得します。 |
|
マネージ コンパイル単位をリンカーの LTCG とリンクするかを示すフラグを取得します。 |
|
行列が行のメジャーかどうかを指定します。 |
|
マネージ コンパイル単位が、. であるかどうかを示すフラグを取得します。 .netmodule (メタデータだけを含む)。 |
|
かどうか、多重継承のデータ メンバーへの this のポインターの位置指定します。 |
|
関数に naked (C++) の属性があるかどうかを示すフラグを取得します。 |
|
変数が最適化するかどうかを指定します。 |
|
this のポインターがシンボル値に基づいているかどうかを指定します。 |
|
このシンボルがデータ メンバーへのポインターであるかどうかを指定します。 |
|
このシンボルがメンバー関数へのポインターであるかどうかを指定します。 |
|
変数が戻り値を持つかどうかを指定します。 |
|
モジュールが /SDL でコンパイルしたかどうかを指定します。 |
|
かどうか、単一継承のデータ メンバーへの this のポインターの位置指定します。 |
|
データが別のシンボルの集計に分割されたかどうかを示すフラグを取得します。 |
|
関数またはサンクのレイヤーが静的であるかどうかを示すフラグを取得します。 |
|
プライベート シンボルがシンボル ファイルから削除されているかどうかを示すフラグを取得します。 |
|
かどうかを仮想継承のデータ メンバーへの this のポインターの位置指定します。 |
|
ソースの言語を取得します。 |
|
このシンボルで表されるオブジェクトが使用するメモリのバイト数を取得します。 |
|
シンボルの構文の親への参照を取得します。 |
|
シンボルの構文の親識別子を取得します。 |
|
オブジェクトの読み込み元のライブラリまたはオブジェクト ファイルの名前を取得します。 |
|
ローカル シンボルが有効であるアドレス範囲の長さを返します。 |
|
ローカル シンボルが有効である開始アドレス範囲のセクション部分を返します。 |
|
ローカル シンボルが有効である開始アドレス範囲のオフセット部分を返します。 |
|
ローカル シンボルが有効であるアドレス範囲の先頭を返します。 |
|
データ シンボルの場所の種類を取得します。 |
|
FORTRAN 配列の次元の下限を取得します。 |
|
FORTRAN 配列の次元の下限のシンボル識別子を取得します。 |
|
ターゲット CPU の種類を取得します。 |
|
シンボルがマネージ コードを参照しているかどうかを示すフラグを取得します。 |
|
メモリ空間の種類を取得します。 |
|
シンボルが Microsoft Intermediate Language (MSIL) コードを参照するかどうかを示すフラグを取得します。 |
|
シンボルの名前を取得します。 |
|
ユーザー定義データ型が入れ子になっているかどうかを示すフラグを取得します。 |
|
関数が noinline の属性でマークされているかどうかを示すフラグを取得します。 |
|
関数が noreturn の属性で宣言されているかどうかを示すフラグを取得します。 |
|
スタックの命令がスタック バッファーのチェックの一部として呼び出すことができるかどうかを示すフラグを取得します。 |
|
関数またはラベルに到達しないかを示すフラグを取得します。 |
|
C ++. AMP のスタブ関数のアクセラレータのポインターのタグの数を返します。 |
|
元の型に適用される修飾子の数を取得します。 |
|
登録のインデックスの数を取得します。 |
|
行列の行数を取得します。 |
|
行列の列数を取得します。 |
|
オブジェクトのファイル名を取得します。 |
|
クラス メソッド用のオブジェクト ポインターの型を取得します。 |
|
シンボルの oemId 値を取得します。 |
|
シンボルの oemSymbolId 値を取得します。 |
|
シンボルの場所のオフセットを取得します。 |
|
関数またはラベルは最適化されたコードが、デバッグ情報を含めるかどうかを示すフラグを取得します。 |
|
ユーザー定義データ型にオーバーロードされた演算子が含まれるかどうかを示すフラグを取得します。 |
|
ユーザー定義データ型がパックされているかどうかを示すフラグを取得します。 |
|
プログラムまたはコンパイル単位のコンパイル対象プラットフォームの種類を取得します。 |
|
関数が純粋仮想関数であるかどうかを示すフラグを取得します。 |
|
FORTRAN 多次元配列のランクを取得します。 |
|
ポインター型が参照であるかどうかを示すフラグを取得します。 |
|
位置のレジスタ指示子を取得します。 |
|
登録の型を取得します。 |
|
位置の相対仮想アドレス (RVA) を取得します。 |
|
this のポインターが制限されるようにフラグが設定されているかどうかを指定します。 |
|
サンプラー スロットを取得します。 |
|
ユーザー定義データ型が非グローバルな構文のスコープで表示されるかどうかを示すフラグを取得します。 |
|
シンボルのシグネチャ値を取得します。 |
|
ユーザー定義型のメンバーのサイズを取得します。 |
|
位置のスロット番号を取得します。 |
|
ソース ファイルの名前を取得します。 |
|
指定されたユーザー定義型が定義された場所を示すソース ファイルと行番号を取得します。 |
|
行列または strided 配列のストライドを取得します。 |
|
サブ型を取得します。 |
|
サブ型 ID を取得します |
|
シンボルの読み込み元のファイルの名前を取得します。 |
|
一意のシンボル識別子を取得します。 |
|
シンボル型分類子を取得します。 |
|
サンク ターゲットのオフセット セクションを取得します。 |
|
サンク ターゲットの相対仮想アドレス (RVA) を取得します。 |
|
サンク ターゲット アドレス セクションを取得します。 |
|
サンク ターゲットの仮想アドレス (VA) を取得します。 |
|
テクスチャのスロットを取得します。 |
|
メソッドの論理調整子 this を取得します。 |
|
関数のサンクの種類を取得します。 |
|
基になる実行可能ファイルのタイムスタンプを取得します。 |
|
マネージ関数またはマネージ変数のメタデータ トークンを取得します。 |
|
関数シグネチャへの参照を取得します。 |
|
シンボルの型識別子を取得します。 |
|
このシンボルのコンパイラ固有の型の値の配列を取得します。 |
|
このシンボルのコンパイラ固有の型識別子の値の配列を取得します。 |
|
uav スロットを取得します。 |
|
ユーザー定義型 (UDT) の種類を取得します。 |
|
ユーザー定義データ型が非整列であるかどうかを示すフラグを取得します。 |
|
C++ 装飾 (リンケージ) 名に対する非装飾名を取得します。 |
|
拡張機能フィールドの値に基づいて非装飾名を取得する get_undecoratedName メソッドの拡張機能 |
|
元の (非修飾) 型 ID を取得します。 |
|
FORTRAN 配列の次元の上限を取得します。 |
|
FORTRAN 配列の次元の上限のシンボル識別子を取得します。 |
|
定数値を取得します。 |
|
関数が仮想関数であるかどうかを示すフラグを取得します。 |
|
位置の仮想アドレス (VA) を取得します。 |
|
ユーザー定義データ型が仮想基本クラスであるかどうかを示すフラグを取得します。 |
|
仮想基本ディスプレイスメント テーブルのインデックスを取得します。 |
|
仮想関数の仮想関数テーブルのオフセットを取得します。 |
|
仮想基本ポインターのオフセットを取得します。 |
|
仮想ベース テーブル ポインターの型を取得します。 |
|
ユーザー定義型に対する仮想テーブルの種類のシンボル インターフェイスを取得します。 |
|
シンボルの仮想テーブル シェイプ ID を取得します。 |
|
ユーザー定義データ型が揮発性であるかどうかを示すフラグを取得します。 |
解説
呼び出し元のメモ
次のいずれかのメソッドを呼び出すことで、このインターフェイスを取得します。
使用例
この例は、特定の相対仮想アドレスでの関数のローカル変数を表示する方法を示しています。 異なる型のシンボルを相互に関連付ける方法も示します。
注意
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