IDiaSymbol

描述符号实例的属性。

语法

IDiaSymbol : IUnknown

按字母顺序排列的方法

下表显示了 IDiaSymbol的方法。

注释

符号将仅返回其中一些方法有意义的数据,具体取决于符号的类型。 如果方法返回 S_OK,则该方法已返回有意义的数据。 有关符号类型的列表,请参阅 符号类型的词法层次结构

方法 DESCRIPTION
IDiaSymbol::findChildren 检索符号的所有子级。
IDiaSymbol::findChildrenEx 检索符号的子级。 此方法是 IDiaSymbol::findChildren 的扩展版本。
IDiaSymbol::findChildrenExByAddr 检索在指定地址处有效的符号的子级。
IDiaSymbol::findChildrenExByRVA 检索在指定相对虚拟地址 (RVA) 处有效的符号的子级。
IDiaSymbol::findChildrenExByVA 检索在指定虚拟地址处有效的符号的子级。
IDiaSymbol::findInlineeLines 检索一个枚举,该枚举允许客户端循环访问此符号中内联或间接内联的所有函数的行号信息。
IDiaSymbol::findInlineeLinesByAddr 检索一个枚举,该枚举允许客户端循环访问指定地址范围内内联或间接内联的所有函数的行号信息。
IDiaSymbol::findInlineeLinesByRVA 检索一个枚举,该枚举允许客户端循环访问指定相对虚拟地址(RVA)内联或间接内联的所有函数的行号信息。
IDiaSymbol::findInlineeLinesByVA 检索一个枚举,该枚举允许客户端循环访问指定虚拟地址(VA)内联或间接内联的所有函数的行号信息。
IDiaSymbol::findInlineFramesByAddr 检索一个枚举,该枚举允许客户端循环访问给定地址上的所有内联帧。
IDiaSymbol::findInlineFramesByRVA 检索一个枚举,该枚举允许客户端循环访问指定相对虚拟地址(RVA)上的所有内联帧。
IDiaSymbol::findInlineFramesByVA 检索一个枚举,该枚举允许客户端循环访问指定虚拟地址(VA)上的所有内联帧。
IDiaSymbol::findInputAssemblyFile 检索 .NET Native 输入程序集文件,该文件是符号的父级。
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_backEndBuild 检索后端内部版本号。
IDiaSymbol::get_backEndMajor 检索后端主版本号。
IDiaSymbol::get_backEndMinor 检索后端次要版本号。
IDiaSymbol::get_backEndQFE 检索后端 qfe 编号。
IDiaSymbol::get_baseDataOffset 检索基本数据偏移量。
IDiaSymbol::get_baseDataSlot 检索基本数据槽。
IDiaSymbol::get_baseSymbol 检索指针所基于的符号。
IDiaSymbol::get_baseSymbolId 检索指针所基于的符号 ID。
IDiaSymbol::get_baseType 检索简单类型的类型标记。
IDiaSymbol::get_bindID 检索绑定寄存器索引。
IDiaSymbol::get_bindSlot 检索绑定空间中的下限。
IDiaSymbol::get_bindSpace 检索绑定空间。
IDiaSymbol::get_bitPosition 检索位置的位位置。
IDiaSymbol::get_builtInKind 检索 HLSL 类型的内置类型。
IDiaSymbol::get_callingConvention 返回方法调用约定的指示器。
IDiaSymbol::get_characteristics 检索此 COFF 部分的特征。
IDiaSymbol::get_classParent 检索对符号的类父级的引用。
IDiaSymbol::get_classParentId 检索符号的类父标识符。
IDiaSymbol::get_code 检索指示符号是否引用代码地址的标志。
IDiaSymbol::get_coffGroup 检索此符号来自的 COFF 组符号。
IDiaSymbol::get_compilerGenerated 检索指示是否生成符号的标志。
IDiaSymbol::get_compilerName 检索用于创建 编译器的编译器的名称。
IDiaSymbol::get_constantExport 检索指示此导出是否为 CONSTANT 的标志。
IDiaSymbol::get_constructor 检索一个标志,该标志指示用户定义数据类型是否具有构造函数。
IDiaSymbol::get_constType 检索一个标志,该标志指示用户定义数据类型是否为常量。
IDiaSymbol::get_container 检索此符号的包含符号。
IDiaSymbol::get_count 检索列表或数组中的项数。
IDiaSymbol::get_countLiveRanges 检索与本地符号关联的有效地址范围数。
IDiaSymbol::get_customCallingConvention 检索指示函数是否使用自定义调用约定的标志。
IDiaSymbol::get_dataBytes 检索 OEM 符号的数据字节。
IDiaSymbol::get_dataExport 检索指示此导出是否为 DATA 的标志。
IDiaSymbol::get_dataKind 检索数据符号的变量分类。
IDiaSymbol::get_editAndContinueEnabled 检索描述已编译程序或单元的“编辑并继续”功能的标志。
IDiaSymbol::get_exceptionHandlerAddressOffset 检索异常处理程序的节偏移量。
IDiaSymbol::get_exceptionHandlerAddressSection 检索异常处理程序的节号。
IDiaSymbol::get_exceptionHandlerRelativeVirtualAddress 检索异常处理程序的相对虚拟地址。
IDiaSymbol::get_exceptionHandlerVirtualAddress 检索异常处理程序的虚拟地址。
IDiaSymbol::get_exportHasExplicitlyAssignedOrdinal 检索指示此导出是否具有显式分配序号的标志。
IDiaSymbol::get_exportIsForwarder 检索指示此导出是否为转发器的标志。
IDiaSymbol::get_farReturn 检索指示函数是否使用远返回的标志。
IDiaSymbol::get_finalLiveStaticSize 在内联后检索实时函数的最终静态大小。
IDiaSymbol::get_framePointerPresent 检索指示此函数是否具有帧指针的标志。
IDiaSymbol::get_frameSize 检索帧大小。
IDiaSymbol::get_frontEndBuild 检索前端内部版本号。
IDiaSymbol::get_frontEndMajor 检索前端主版本号。
IDiaSymbol::get_frontEndMinor 检索前端次要版本号。
IDiaSymbol::get_frontEndQFE 检索前端 QFE 版本号。
IDiaSymbol::get_function 检索指示公共符号是否引用函数的标志。
IDiaSymbol::get_guid 检索符号的 GUID。
IDiaSymbol::get_hasAlloca 检索一个标志,该标志指示函数是否包含对 alloca. 的调用。
IDiaSymbol::get_hasAssignmentOperator 检索一个标志,该标志指示用户定义数据类型是否定义了任何赋值运算符。
IDiaSymbol::get_hasCastOperator 检索一个标志,该标志指示用户定义数据类型是否定义了任何强制转换运算符。
IDiaSymbol::get_hasControlFlowCheck 检索指示此函数是否包含控制流检查的标志。
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_hasValidPGOCounts 检索一个标志,指示此符号是否具有有效的 PGO 计数。
IDiaSymbol::get_hfaDouble 检索一个标志,该标志指定用户定义类型 (UDT) 是否包含双精度类型的同质浮点聚合 (HFA) 数据。
IDiaSymbol::get_hfaFloat 检索一个标志,该标志指定用户定义类型 (UDT) 是否包含类型 float 的同质浮点聚合 (HFA) 数据。
IDiaSymbol::get_indirectVirtualBaseClass 检索一个标志,该标志指示用户定义数据类型是否为间接虚拟基类。
IDiaSymbol::get_InlSpec 检索一个标志,该标志指示函数是否已使用内联属性进行标记。
IDiaSymbol::get_interruptReturn 检索指示函数是否具有中断指令返回的标志。
IDiaSymbol::get_intrinsic 检索一个标志,该标志指定类是否为内部类型。
IDiaSymbol::get_intro 检索指示函数是否为基类虚拟函数的标志。
IDiaSymbol::get_isAcceleratorGroupSharedLocal 检索一个标志,该标志指示符号是否对应于为 C++ AMP Accelerator 编译的代码中的组共享本地变量。
IDiaSymbol::get_isAcceleratorPointerTagLiveRange 检索一个标志,该标志指示符号是否对应于为 C++ AMP Accelerator 编译的代码中指针变量的标记组件的 定义范围符号 。 定义范围符号是地址范围的变量的位置。
IDiaSymbol::get_isAcceleratorStubFunction 指示符号是否对应于为对应于 parallel_for_each 调用的加速器编译的着色器的顶级函数符号。
IDiaSymbol::get_isAggregated 检索一个标志,该标志指示数据是否是许多符号的聚合的一部分。
IDiaSymbol::get_isConstructorVirtualBase 检索一个标志,指示这是具有虚拟基的类的实例构造函数。
IDiaSymbol::get_isCTypes 检索指示符号文件是否包含 C 类型的标志。
IDiaSymbol::get_isCVTCIL 检索一个标志,该标志指示模块是否已从公共中间语言(CIL)转换为本机代码。
IDiaSymbol::get_isCxxReturnUdt 检索指示是否返回C++样式 UDT 的标志。
IDiaSymbol::get_isDataAligned 检索一个标志,该标志指示用户定义数据类型的元素是否与特定边界对齐。
IDiaSymbol::get_isHLSLData 指定此符号是否表示高级着色器语言 (HLSL) 数据。
IDiaSymbol::get_isHotpatchable 检索一个标志,该标志指示是否使用 /hotpatch(创建热修补映像) 编译器开关编译模块。
IDiaSymbol::get_isInterfaceUdt 检索一个标志,指示类型是否为 WinRT 接口用户定义类型(UDT)。
IDiaSymbol::get_isLocationControlFlowDependent 检索一个标志,该标志指示本地符号的位置生存度是否依赖于函数的控制流。
IDiaSymbol::get_isLTCG 检索一个标志,该标志指示托管编译是否与链接器的 LTG 链接。
IDiaSymbol::get_isMatrixRowMajor 指定矩阵是否为主要行。
IDiaSymbol::get_isMSILNetmodule 检索指示托管编译是否为 .netmodule(仅包含元数据)的标志。
IDiaSymbol::get_isMultipleInheritance 指定指针是否 this 指向具有多个继承的数据成员。
IDiaSymbol::get_isNaked 检索指示函数是否具有 属性的标志。
IDiaSymbol::get_isOptimizedAway 指定变量是否已优化。
IDiaSymbol::get_isOptimizedForSpeed 检索一个标志,指示函数是否针对速度进行优化。
IDiaSymbol::get_isPGO 检索指示是否已启用 PGO 的标志。
IDiaSymbol::get_isPointerBasedOnSymbolValue 指定指针是否 this 基于符号值。
IDiaSymbol::get_isPointerToDataMember 指定此符号是否是指向数据成员的指针。
IDiaSymbol::get_isPointerToMemberFunction 指定此符号是否是指向成员函数的指针。
IDiaSymbol::get_isRefUdt 检索一个标志,指示这是否为 WinRT 引用用户定义类型 (UDT)。
IDiaSymbol::get_isReturnValue 指定变量是否携带返回值。
IDiaSymbol::get_isSafeBuffers 检索一个标志,该标志指定是否使用安全缓冲区的预处理程序指令。
IDiaSymbol::get_isSdl 指定是否使用 /SDL 选项编译模块。
IDiaSymbol::get_isSingleInheritance 指定指针是否 this 指向具有单个继承的数据成员。
IDiaSymbol::get_isSplitted 检索一个标志,该标志指示数据是否已拆分为单独的符号的聚合。
IDiaSymbol::get_isStatic 检索指示函数还是 thunk 层是静态的标志。
IDiaSymbol::get_isStripped 检索一个标志,该标志指示是否已从符号文件中剥离专用符号。
IDiaSymbol::get_isValueUdt 检索一个标志,该标志指示这是否为 WinRT 值用户定义类型(UDT)。
IDiaSymbol::get_isVirtualInheritance 指定指针是否 this 指向具有虚拟继承的数据成员。
IDiaSymbol::get_isWinRTPointer 检索一个标志,指示这是否为 WinRT 指针类型。
IDiaSymbol::get_language 检索源的语言。
IDiaSymbol::get_length 检索由此符号表示的对象使用的内存字节数。
IDiaSymbol::get_lexicalParent 检索对符号的词法父级的引用。
IDiaSymbol::get_lexicalParentId 检索符号的词法父标识符。
IDiaSymbol::get_libraryName 检索从中加载对象的库或对象文件的文件名。
IDiaSymbol::get_liveRangeLength 返回本地符号有效地址范围的长度。
IDiaSymbol::get_liveRangeStartAddressOffset 返回本地符号有效的起始地址范围的偏移量部分。
IDiaSymbol::get_liveRangeStartAddressSection 返回本地符号有效的起始地址范围的节部分。
IDiaSymbol::get_liveRangeStartRelativeVirtualAddress 返回本地符号有效的地址范围的开头。
IDiaSymbol::get_localBasePointerRegisterId 检索寄存器的寄存器指示符,该寄存器保留基指针指向局部变量。
IDiaSymbol::get_locationType 检索数据符号的位置类型。
IDiaSymbol::get_lowerBound 检索 FORTRAN 数组维度的下限。
IDiaSymbol::get_lowerBoundId 检索 FORTRAN 数组维度下限的符号标识符。
IDiaSymbol::get_machineType 检索目标 CPU 的类型。
IDiaSymbol::get_managed 检索一个标志,该标志指示符号是否引用托管代码。
IDiaSymbol::get_memorySpaceKind 检索内存空间类型。
IDiaSymbol::get_modifierValues 检索此符号的修饰符集。
IDiaSymbol::get_msil 检索一个标志,该标志指示符号是否引用Microsoft中间语言(MSIL)代码。
IDiaSymbol::get_name 检索符号的名称。
IDiaSymbol::get_nested 检索指示用户定义数据类型是否嵌套的标志。
IDiaSymbol::get_noInline 检索一个标志,该标志指示函数是否使用 noinline 特性进行标记。
IDiaSymbol::get_noNameExport 检索指示此导出是否为 NONAME的标志。
IDiaSymbol::get_noReturn 检索一个标志,该标志指示是否已使用 noreturn 属性声明函数。
IDiaSymbol::get_noStackOrdering 检索一个标志,该标志指示在堆栈缓冲区检查过程中是否可以执行堆栈排序。
IDiaSymbol::get_notReached 检索指示是否从未达到函数或标签的标志。
IDiaSymbol::get_numberOfAcceleratorPointerTags 返回C++ AMP 存根函数中的加速键标记数。
IDiaSymbol::get_numberOfColumns 检索矩阵中的列数。
IDiaSymbol::get_numberOfModifiers 检索应用于原始类型的修饰符数。
IDiaSymbol::get_numberOfRegisterIndices 检索寄存器索引数。
IDiaSymbol::get_numberOfRows 检索矩阵中的行数。
IDiaSymbol::get_numericProperties 检索此符号的数值属性集。
IDiaSymbol::get_objectFileName 检索对象文件名。
IDiaSymbol::get_objectPointerType 检索类方法的对象指针的类型。
IDiaSymbol::get_oemId 检索符号 oemId 的值。
IDiaSymbol::get_oemSymbolId 检索符号 oemSymbolId 的值。
IDiaSymbol::get_offset 检索符号位置的偏移量。
IDiaSymbol::get_offsetInUdt 检索外部用户定义类型(UDT)中此符号的字段偏移量。
IDiaSymbol::get_optimizedCodeDebugInfo 检索一个标志,该标志指示函数或标签是否包含优化的代码以及调试信息。
IDiaSymbol::get_ordinal 检索此导出的序号。
IDiaSymbol::get_overloadedOperator 检索指示用户定义数据类型是否具有重载运算符的标志。
IDiaSymbol::get_packed 检索指示用户定义数据类型是否打包的标志。
IDiaSymbol::get_paramBasePointerRegisterId 检索持有基指针到参数的寄存器的寄存器指示符。
IDiaSymbol::get_PGODynamicInstructionCount 检索训练计算的动态指令计数。
IDiaSymbol::get_PGOEdgeCount 检索调用方/被调用方与其父级之间的边缘计数。
IDiaSymbol::get_PGOEntryCount 检索 PGO 训练中的总调用计数。
IDiaSymbol::get_phaseName 检索此函数是 PGO 多阶段生成的一个成员的阶段。
IDiaSymbol::get_platform 检索编译程序或编译程序的平台类型。
IDiaSymbol::get_privateExport 检索指示此导出是否为 PRIVATE的标志。
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_RValueReference 检索一个标志,该标志指定指针类型是否为右值引用。
IDiaSymbol::get_samplerSlot 检索采样器槽。
IDiaSymbol::get_scoped 检索一个标志,该标志指示用户定义数据类型是否出现在非全局词法范围内。
IDiaSymbol::get_sealed 检索一个标志,该标志指定类或方法是否密封。
IDiaSymbol::get_signature 检索符号的签名值。
IDiaSymbol::get_sizeInUdt 检索用户定义类型的成员的大小。
IDiaSymbol::get_slot 检索位置的槽号。
IDiaSymbol::get_sourceFileName 检索源文件的文件名。
IDiaSymbol::get_staticSize 检索静态指令计数。
IDiaSymbol::get_strictGSCheck 检索一个标志,该标志指示是否使用启用杂注编译strict_gs_check此函数。
IDiaSymbol::get_stride 检索矩阵或步进数组的步幅。
IDiaSymbol::get_subType 检索子类型。
IDiaSymbol::get_subTypeId 检索子类型 ID。
IDiaSymbol::get_symbolsFileName 检索从中加载符号的文件的名称。
IDiaSymbol::get_symIndexId 检索唯一符号标识符。
IDiaSymbol::get_symTag 检索符号类型分类器。
IDiaSymbol::get_targetOffset 检索 thunk 目标的偏移量部分。
IDiaSymbol::get_targetRelativeVirtualAddress 检索 thunk 目标的相对虚拟地址 (RVA)。
IDiaSymbol::get_targetSection 检索 thunk 目标的地址部分。
IDiaSymbol::get_targetVirtualAddress 检索 thunk 目标的虚拟地址 (VA)。
IDiaSymbol::get_textureSlot 检索纹理槽。
IDiaSymbol::get_thisAdjust 检索方法的逻辑 this 调整器。
IDiaSymbol::get_thunkOrdinal 检索函数的 thunk 类型。
IDiaSymbol::get_timeStamp 检索基础可执行文件的时间戳。
IDiaSymbol::get_token 检索托管函数或变量的元数据令牌。
IDiaSymbol::get_type 检索对函数签名的引用。
IDiaSymbol::get_typeId 检索符号的类型标识符。
IDiaSymbol::get_typeIds 检索此符号的特定于编译器的类型标识符值的数组。
IDiaSymbol::get_types 检索此符号的编译器特定类型值的数组。
IDiaSymbol::get_uavSlot 检索 uav 槽。
IDiaSymbol::get_udtKind 检索用户定义的类型(UDT)的各种类型。
IDiaSymbol::get_unalignedType 检索指示用户定义数据类型是否未对齐的标志。
IDiaSymbol::get_undecoratedName 检索修饰C++或链接名称的未编码名称。
IDiaSymbol::get_undecoratedNameEx get_undecoratedName基于扩展字段的值检索未编码名称的方法的扩展。
IDiaSymbol::get_unmodifiedType 检索此符号的原始(未修改)类型。
IDiaSymbol::get_unmodifiedTypeId 检索原始(未修改)类型的 ID。
IDiaSymbol::get_unused 已弃用的函数。
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 检索指示用户定义数据类型是否可变的标志。
IDiaSymbol::get_wasInlined 检索一个标志,该标志指示此函数符号是否内联到另一个函数中。
IDiaSymbol::getSrcLineOnTypeDefn 检索源文件和行号,该值指示指定用户定义类型的位置。

注解

呼叫者的说明

通过调用以下方法之一来获取此接口:

示例:

此示例演示如何在给定相对虚拟地址上显示函数的局部变量。 它还演示了不同类型的符号如何相互关联。

注释

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:msdia140.dll

另请参阅