IDiaEnumSymbols
データ ソースに含まれているさまざまなシンボルを列挙します。
構文
IDiaEnumSymbols : IUnknown
Vtable 順序のメソッド
次の表に、IDiaEnumSymbols
のメソッドを示します。
メソッド | 説明 |
---|---|
IDiaEnumSymbols::get__NewEnum | この列挙子の IEnumVARIANT Interface バージョンを取得します。 |
IDiaEnumSymbols::get_Count | シンボルの数を取得します。 |
IDiaEnumSymbols::Item | インデックスを使ってシンボルを取得します。 |
IDiaEnumSymbols::Next | 列挙シーケンス内の指定された数のシンボルを取得します。 |
IDiaEnumSymbols::Skip | 列挙型シーケンス内の指定された数のシンボルをスキップします。 |
IDiaEnumSymbols::Reset | 列挙シーケンスを先頭にリセットします。 |
IDiaEnumSymbols::Clone | 現在の列挙子と同じ列挙状態を含む列挙子を作成します。 |
解説
このインターフェイスは、 SymTagUDT
(ユーザー定義型 (UDT)) や SymTagBaseClass
など、特定の種類のシンボルでグループ化されたシンボルを提供します。 アドレスによってグループ化されたシンボルを操作するには、IDiaEnumSymbolsByAddr インターフェイスを使用します。
呼び出し元に関する注意事項
このインターフェイスを取得するには、次のメソッドを呼び出します。
例
この例では、IDiaEnumSymbols
インターフェイスを取得した後、その列挙体を使用してユーザー定義型 (UDT) を一覧表示する方法を示します。
Note
CDiaBSTR
は、BSTR
をラップし、インスタンス化がスコープ外になったときに文字列の解放を自動的に処理するクラスです。
void ShowUDTs(IDiaSymbol *pGlobals)
{
CComPtr<IDiaEnumSymbols> pEnum;
CComPtr<IDiaSymbol> pSymbol;
HRESULT hr;
hr = pGlobals->findChildren(SymTagUDT,
NULL,
nsfCaseInsensitive | nsfUndecoratedName,
&pEnum);
if (hr == S_OK)
{
while ( SUCCEEDED( hr = pEnum->Next( 1, &pSymbol, &celt ) ) &&
celt == 1 )
{
CDiaBSTR name;
if ( pSymbol->get_name( &name ) != S_OK )
Fatal( "get_name" );
printf( "Found UDT: %ws\n", name );
pSymbol = 0;
}
}
}
要件
ヘッダー: Dia2.h
ライブラリ: diaguids.lib
DLL: msdia80.dll