描述一个符号实例的属性。
IDiaSymbol : IUnknown
在字母顺序中的方法
下表显示了 IDiaSymbol 的方法。
![]() |
---|
根据符号类型,符号将返回仅适用于这些方法中的一部分的有意义数据。如果方法返回 S_OK,则该方法有返回的有意义的数据。 |
方法 |
说明 |
---|---|
检索该符号的所有子级。 |
|
检索该符号的子级。此方法是 IDiaSymbol::findChildren 的扩展版本。 |
|
检索在指定的地址有效的该符号的子级。 |
|
检索在指定的相对虚拟地址(RVA)有效的该符号的子级。 |
|
检索在指定的虚拟地址有效的该符号的子级。 |
|
检索允许客户端通过所有在特定地址的内联帧重复的枚举。 |
|
检索允许客户端通过所有在指定的相对虚拟地址(RVA)的内联帧重复的枚举。 |
|
检索允许客户端通过所有在指定的虚拟地址(VA)的内联帧重复的枚举。 |
|
检索允许客户端通过所有功能行号信息重复内联,直接或间接,此符号的枚举。 |
|
检索允许客户端通过所有功能行号信息重复内联,直接或间接,在指定的地址范围内的此符号的枚举。 |
|
检索允许客户端通过所有功能行号信息重复内联,直接或间接,在该指定的相对虚拟地址(RVA)中的该符号的枚举。 |
|
检索允许客户端通过所有功能行号信息重复内联,直接或间接,在指定的虚拟地址(VA)中的该符号的枚举。 |
|
将一个对应的标记值,此方法返回某个指定的相对虚拟地址的此存根函数包含符号的枚举。 |
|
返回快捷键在c. C++ AMP存根函数的指针标记的数目。 |
|
返回对应于c. C++ AMP快捷键存根函数的所有快捷键指针标记值。 |
|
检索类成员的访问修饰符。 |
|
检索地址位置的偏移部件。 |
|
检索地址位置的部分部件。 |
|
检索一个标志,该标志表明另外一个符号是否引用该地址。 |
|
检索程序数据库的生存期值。 |
|
检索该符号的数组索引类型标识符。 |
|
检索该符号的数组索引类型标识符。 |
|
检索尾端主版本号。 |
|
检索尾端次版本号。 |
|
检索后端生成号。 |
|
检索基本数据偏移量。 |
|
检索基本数据槽。 |
|
检索指针基于的符号。 |
|
检索指针基于的符号ID。 |
|
检索简单类型的类型标记。 |
|
检索位置的位位置。 |
|
检索内置HLSL类型。 |
|
返回方法调用约定指示符。 |
|
检索对该符号的类父级的引用。 |
|
检索该符号的类父级标示符。 |
|
检索一个标志,该标志表明此符号是否引用一个代码地址。 |
|
检索一个标志,该标志表明此符号是否由编译器生成。 |
|
检索使用的编译器的名称创建 编译单位。 |
|
检索一个标志,该标志表明用户定义数据类型是否具有一个构造函数。 |
|
检索此符号包含的符号。 |
|
检索一个标志,该标志表明用户定义数据类型是否是一个常量。 |
|
检索数组列表中的项数。 |
|
检索与在本地符号相关的有效的地址范围的数量。 |
|
检索指示函数是否的标志使用自定义调用约定。 |
|
检索 OEM 符号的数据字节。 |
|
检索数据符号的变量的类别。 |
|
检索介绍编译的程序或单元的“编辑并继续”功能的标志。 |
|
检索指示函数是否的标志将返回。 |
|
检索前端主版本号。 |
|
检索前端次版本号。 |
|
检索前端生成号。 |
|
检索标志指示公共符号是否引用一个函数。 |
|
检索符号的 GUID。 |
|
检索指示函数是否的标志包含对 alloca。 |
|
检索一个标志,该标志表明用户定义数据类型是否具有任何定义的赋值运算符。 |
|
检索一个标志,该标志表明用户定义数据类型是否具有任何定义的强制转换运算符。 |
|
检索指示是否编译的标志包含任何调试信息。 |
|
检索指示函数是否的标志具有c. C++样式的异常处理程序。 |
|
检索指示函数是否的标志具有异步异常处理程序。 |
|
检索指示函数是否的标志具有内联程序集。 |
|
检索指示函数是否的标志包含一个longjmp命令(一部分的C样式异常处理)。 |
|
检索一个标志,该标志表明这个模块是否包含托管代码。 |
|
检索一个标志,该标志表明用户定义数据类型是否具有嵌套类型的定义。 |
|
检索指示函数或编译是否的标志存在编译的安全检查(通过 /GS(缓冲区安全检查) 编译器开关)。 |
|
检索指示函数是否的标志具有Win32样式结构化异常处理。 |
|
检索指示函数是否的标志包含一个setjmp命令。 |
|
检索一个标志,该标志表明用户定义数据类型是否为间接虚拟基类。 |
|
检索指示函数是否的标志标有内联属性。 |
|
检索指示函数是否的标志具有从中断命令的一返回。 |
|
检索一个标志,该标志表明此函数是否为基类虚拟函数。 |
|
检索指示的标志符号是否符合在为c. C++ AMP快捷键编译代码的一组共享局部变量。 |
|
检索指示的标志符号是否符合指针变量的标记元素的 定义范围符号 在为c. C++ AMP快捷键生成的代码。定义范围符号是变量的位置地址范围的。 |
|
指示符号是否对应于对应于 parallel_for_each 调用的快捷键编译着色器的顶级函数符号。 |
|
检索指示该数据是否的标志是许多符号聚合的一部分。 |
|
检索指示符号文件是否的标志包含C类型。 |
|
检索指示模块是否的标志从公共中间语言(CIL)转换为本机代码。 |
|
检索指示一个用户定义的数据类型的元素是否的标志对齐特定边界。 |
|
指定此符号是否表示高级着色器语言(HLSL)数据。 |
|
检索一个标志,该标志表明此模块是否通过编译器开关 /hotpatch(创建可热修补的映像) 编译。 |
|
检索指示托管编译是否的标志链接器的LTCG链接到。 |
|
指定该矩阵是否与行。 |
|
检索指示托管编译是否的标志是a。.netmodule (仅包含元数据)。 |
|
指定 this 指针是否指向具有多重继承的数据成员。 |
|
检索指示函数是否的标志具有 naked (C++) 属性。 |
|
指定变量是否进行了优化。 |
|
指定 this 指针是否基于符号值。 |
|
指定此符号是否指向数据成员。 |
|
指定此符号是否是指向成员函数。 |
|
指定变量是否具有一个返回值。 |
|
指定模块是否使用/SDL选项编译。 |
|
指定 this 指针是否指向具有单一继承的数据成员。 |
|
检索指示该数据是否的标志已拆分为单独的符号聚合。 |
|
检索一个标志,该标志表明函数或 thunk 层是否为静态。 |
|
检索指示私有符号是否的标志从符号文件中去除。 |
|
指定 this 指针是否指向具有虚拟继承的数据成员。 |
|
检索源语言。 |
|
检索该符号表示的对象使用的内存位。 |
|
检索对该符号的词法父级的引用。 |
|
检索该符号的词法父级标示符。 |
|
检索该对象加载的库或对象文件的文件名。 |
|
返回本地符号有效的地址范围的长度。 |
|
返回起始地址范围的节部分,在此范围内本地符号有效。 |
|
返回起始地址范围的偏移量部分,在此范围内本地符号有效。 |
|
返回本地符号有效的地址范围的开始。 |
|
检索数据符号的位置类型。 |
|
检索 FORTRAN 数组维度的下限。 |
|
检索表示 FORTRAN 数组维度的下限的符号标识。 |
|
检索目标 CPU 的类型。 |
|
检索一个标志,该标志表明此符号是否引用一个托管代码。 |
|
检索内存空间类型。 |
|
检索一个标志,该标志表明此符号是否引用 Microsoft 中间语言(MSIL) 代码。 |
|
检索符号的名称。 |
|
检索一个标志,该标志表明用户定义数据类型是否为嵌套类型。 |
|
检索指示函数是否的标志标有 noinline 属性。 |
|
检索指示函数是否的标志。noreturn 属性。 |
|
检索指示堆栈排序作为堆栈缓冲区检查的一部分,是否的标志无法完成。 |
|
检索指示函数或标签是否的标志永远不会达到。 |
|
返回快捷键在c. C++ AMP存根函数的指针标记的数目。 |
|
检索应用于基元类型修饰符的数目。 |
|
检索注册索引的数目。 |
|
检索行数该矩阵的。 |
|
检索列数在该矩阵的。 |
|
检索对象文件名。 |
|
检索基类方法的对象指针的类型。 |
|
检索符号的 oemId 值。 |
|
检索符号的 oemSymbolId 值。 |
|
检索该符号位置的偏移量。 |
|
检索指示函数或标签是否的标志包含优化代码和调试信息。 |
|
检索一个标志,该标志表明用户定义数据类型是否具有重载运算符。 |
|
检索一个标志,该标志表明用户定义数据类型是否为压缩类型。 |
|
检索被编译的程序或编译平台类型。 |
|
检索一个标志,该标志表明这个函数是否是纯虚拟的。 |
|
检索 FORTRAN 多维数组维度的分级。 |
|
检索一个标志,该标志表明指针类型是否为一个引用。 |
|
检索该位置的寄存器指示符。 |
|
检索注册类型。 |
|
检索位置的相对虚拟地址 (RVA)。 |
|
指定 this 指针是否标记为已限制。 |
|
检索采样人员槽。 |
|
检索一个标志,该标志表明用户定义数据类型是否出现在一个非全局词法作用域内。 |
|
检索符号的签名值。 |
|
检索一个用户定义的类型成员的范围。 |
|
检索该位置的槽编号。 |
|
检索远文件的文件名。 |
|
检索指示的源文件和行号一个指定的用户定义类型是在何处定义。 |
|
检索该矩阵的步幅或步幅数组。 |
|
检索子类型。 |
|
检索子类型ID. |
|
检索符号加载的文件的名称。 |
|
检索其唯一符号标识符。 |
|
检索符号类型分类器。 |
|
检索 thunk 目标的偏移段。 |
|
检索一个 thunk 目标的相对虚拟地址 (RVA)。 |
|
检索 thunk 目标的地址段。 |
|
检索一个 thunk 目标的虚拟地址 (VA)。 |
|
检索纹理槽。 |
|
检索该方法的逻辑 this 调整器。 |
|
检索作为函数的 thunk 类型。 |
|
检索基础的可执行文件的时间戳。 |
|
检索托管函数或变量的元数据标记。 |
|
检索对函数签名的引用。 |
|
检索该符号的类型标识符。 |
|
检索此符号编译器特定的类型的值数组。 |
|
检索此符号编译器特定的类型的标识符值数组。 |
|
检索uav槽。 |
|
检索多种用户定义的类型 (UDT)。 |
|
检索一个标志,该标志表明用户定义数据类型是否是未对齐的。 |
|
检索 C++ 修饰或链接名的未修饰名。 |
|
基于扩展字段的值检索该未修饰名的 get_undecoratedName 方法的扩展。 |
|
检索原始(非限定)类型的ID。 |
|
检索 FORTRAN 数组维度的上限。 |
|
检索表示 FORTRAN 数组维度的上限的符号标识。 |
|
索引常数的值。 |
|
检索一个标志,该标志表明这个函数是否是虚拟的。 |
|
检索位置的虚拟地址(VA)。 |
|
检索一个标志,该标志表明用户定义数据类型是否为虚拟基类。 |
|
检索该索引到虚拟基偏移表。 |
|
检索虚拟函数的虚函数表中的偏移。 |
|
检索虚拟基指针的偏移量。 |
|
检索虚拟基表指针的类型。 |
|
检索一个用户定义的类型的虚表的类型的符号接口。 |
|
检索符号的虚拟表格形状标识符(VA)。 |
|
检索一个标志,该标志表明用户定义数据类型是否是可变的。 |
备注
对调用方法的说明
通过调用下列方法之一来获取此接口:
示例
此示例显示了如何在某一给定的相对虚拟地址函数显示函数的局部变量。它还显示不同类型的符号如何相互关联。
![]() |
---|
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