共用方式為


IDiaEnumSymbols

Note

This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here

Enumerates the various symbols contained in the data source.

Syntax

IDiaEnumSymbols : IUnknown  

Methods in Vtable Order

The following table shows the methods of IDiaEnumSymbols.

Method Description
IDiaEnumSymbols::get__NewEnum Retrieves the IEnumVARIANT Interface version of this enumerator.
IDiaEnumSymbols::get_Count Retrieves the number of symbols.
IDiaEnumSymbols::Item Retrieves a symbol by means of an index.
IDiaEnumSymbols::Next Retrieves a specified number of symbols in the enumeration sequence.
IDiaEnumSymbols::Skip Skips a specified number of symbols in an enumeration sequence.
IDiaEnumSymbols::Reset Resets an enumeration sequence to the beginning.
IDiaEnumSymbols::Clone Creates an enumerator that contains the same enumeration state as the current enumerator.

Remarks

This interface provides symbols grouped by a specific type of symbol, for example, SymTagUDT (user-defined types) or SymTagBaseClass. To work with symbols grouped by address, use the IDiaEnumSymbolsByAddr interface.

Notes for Callers

Obtain this interface by calling the following methods:

Example

This example shows how to obtain the IDiaEnumSymbols interface and then use that enumeration to list user-defined types (UDTs).

Note

CDiaBSTR is a class that wraps a BSTR and automatically handles freeing the string when the instantiation goes out of scope.

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;  
        }  
    }  
}  

Requirements

Header: Dia2.h

Library: diaguids.lib

DLL: msdia80.dll

See Also

Interfaces (Debug Interface Access SDK)
IDiaSession::findChildren
IDiaSourceFile::get_compilands
IDiaSymbol::findChildren