IDiaSymbol

Описывает свойства экземпляра символа.

Синтаксис

IDiaSymbol : IUnknown

Методы в алфавитном порядке

В следующей таблице показаны методы IDiaSymbol.

Примечание

Символы будут возвращать значимые данные только для некоторых из этих методов в зависимости от типа символа. Если метод возвращает S_OK, то этот метод вернул значимые данные.

Метод Описание
IDiaSymbol::findChildren Извлекает все дочерние элементы символа.
IDiaSymbol::findChildrenEx Возвращает дочерние элементы символа. Этот метод является расширенной версией IDiaSymbol:: финдчилдрен.
IDiaSymbol::findChildrenExByAddr Возвращает дочерние символы символа, которые являются допустимыми по указанному адресу.
IDiaSymbol::findChildrenExByRVA Получает дочерние символы символа, которые являются допустимыми по указанному относительному виртуальному адресу (RVA).
IDiaSymbol::findChildrenExByVA Возвращает дочерние символы символа, которые являются допустимыми по указанному виртуальному адресу.
IDiaSymbol::findInlineFramesByAddr Извлекает перечисление, позволяющее клиенту выполнять итерацию всех встроенных кадров по заданному адресу.
IDiaSymbol::findInlineFramesByRVA Извлекает перечисление, позволяющее клиенту выполнять итерацию всех встроенных кадров на указанном относительном виртуальном адресе (RVA).
IDiaSymbol::findInlineFramesByVA Извлекает перечисление, позволяющее клиенту выполнять итерацию всех встроенных кадров на указанном виртуальном адресе (ва).
IDiaSymbol::findInlineeLines Извлекает перечисление, позволяющее клиенту выполнять итерацию по сведениям о номере строки всех функций, встроенных, прямо или косвенно, в этом символе.
IDiaSymbol::findInlineeLinesByAddr Извлекает перечисление, позволяющее клиенту выполнять итерацию по сведениям о номере строки всех функций, встроенных, прямо или косвенно, в этом символе в пределах указанного диапазона адресов.
IDiaSymbol::findInlineeLinesByRVA Извлекает перечисление, позволяющее клиенту выполнять итерацию по сведениям о номере строки всех функций, встроенных, прямо или косвенно, в этом символе в пределах указанного относительного виртуального адреса (RVA).
IDiaSymbol::findInlineeLinesByVA Извлекает перечисление, позволяющее клиенту выполнять итерацию по сведениям о номере строки всех функций, встроенных, прямо или косвенно, в этом символе в пределах указанного виртуального адреса (ва).
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_backEndMajor Извлекает основной номер версии серверной части.
IDiaSymbol::get_backEndMinor Извлекает дополнительный номер версии серверной части.
IDiaSymbol::get_backEndBuild Получает номер сборки серверной части.
IDiaSymbol::get_baseDataOffset Возвращает смещение базовой информации.
IDiaSymbol::get_baseDataSlot Извлекает базовый слот данных.
IDiaSymbol::get_baseSymbol Извлекает символ, на основе которого основан указатель.
IDiaSymbol::get_baseSymbolId Возвращает идентификатор символа, на основе которого основан указатель.
IDiaSymbol::get_baseType Возвращает тег типа простого типа.
IDiaSymbol::get_bitPosition Возвращает позицию бита расположения.
IDiaSymbol::get_builtInKind Получает встроенный вид типа HLSL.
IDiaSymbol::get_callingConvention Возвращает индикатор соглашения о вызове метода.
IDiaSymbol::get_classParent Извлекает ссылку на родительский класс символа.
IDiaSymbol::get_classParentId Получает родительский идентификатор класса символа.
IDiaSymbol::get_code Получает флаг, указывающий, относится ли символ к адресу кода.
IDiaSymbol::get_compilerGenerated Получает флаг, указывающий, создан ли символ компилятором.
IDiaSymbol::get_compilerName Возвращает имя компилятора, используемого для создания компилируемого объекта.
IDiaSymbol::get_constructor Получает флаг, указывающий, имеет ли определяемый пользователем тип данных конструктор.
IDiaSymbol::get_container Извлекает содержащий символ этого символа.
IDiaSymbol::get_constType Получает флаг, указывающий, является ли определяемый пользователем тип данных константой.
IDiaSymbol::get_count Извлекает количество элементов в списке или массиве.
IDiaSymbol::get_countLiveRanges Возвращает число допустимых диапазонов адресов, связанных с локальным символом.
IDiaSymbol::get_customCallingConvention Получает флаг, указывающий, использует ли функция настраиваемое соглашение о вызовах.
IDiaSymbol::get_dataBytes Извлекает байты данных символа OEM.
IDiaSymbol::get_dataKind Извлекает классификацию переменных для символа данных.
IDiaSymbol::get_editAndContinueEnabled Получает флаг, описывающий функции "изменить и продолжить" скомпилированной программы или единицы.
IDiaSymbol::get_farReturn Получает флаг, указывающий, использует ли функция дальнее возврат.
IDiaSymbol::get_frontEndMajor Возвращает основной номер версии внешнего интерфейса.
IDiaSymbol::get_frontEndMinor Получает дополнительный номер версии внешнего интерфейса.
IDiaSymbol::get_frontEndBuild Получает номер сборки внешнего интерфейса.
IDiaSymbol::get_function Получает флаг, указывающий на то, что открытый символ ссылается на функцию.
IDiaSymbol::get_guid Возвращает GUID символа.
IDiaSymbol::get_hasAlloca Получает флаг, указывающий, содержит ли функция вызов alloca.
IDiaSymbol::get_hasAssignmentOperator Получает флаг, указывающий, определены ли определяемые пользователем типы данных операторов присваивания.
IDiaSymbol::get_hasCastOperator Получает флаг, указывающий, содержит ли определяемый пользователем тип данных какие-либо операторы CAST.
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_indirectVirtualBaseClass Получает флаг, указывающий, является ли определяемый пользователем тип данных косвенным виртуальным базовым классом.
IDiaSymbol::get_InlSpec Получает флаг, указывающий, была ли функция помечена встроенным атрибутом.
IDiaSymbol::get_interruptReturn Получает флаг, указывающий, имеет ли функция возврат из инструкции прерывания.
IDiaSymbol::get_intro Получает флаг, указывающий, является ли функция виртуальной функцией базового класса.
IDiaSymbol::get_isAcceleratorGroupSharedLocal Получает флаг, указывающий, соответствует ли символ общей локальной переменной группы в коде, скомпилированном для ускорителя C++ amp.
IDiaSymbol::get_isAcceleratorPointerTagLiveRange Получает флаг, указывающий, соответствует ли символ символу диапазона определения для компонента-тега в переменной-указателе в коде, скомпилированном C++ для ускорителя amp. Символ диапазона определения — это расположение переменной для диапазона адресов.
IDiaSymbol::get_isAcceleratorStubFunction Указывает, соответствует ли символ символу функции верхнего уровня для шейдера, скомпилированного для ускорителя, соответствующего вызову parallel_for_each.
IDiaSymbol::get_isAggregated Получает флаг, указывающий, являются ли данные частью совокупности множества символов.
IDiaSymbol::get_isCTypes Получает флаг, указывающий, содержит ли файл символов типы C.
IDiaSymbol::get_isCVTCIL Получает флаг, указывающий, был ли модуль преобразован из стандартного промежуточного языка (CIL) в машинный код.
IDiaSymbol::get_isDataAligned Получает флаг, указывающий, вычисляются ли элементы определяемого пользователем типа данных с определенной границей.
IDiaSymbol::get_isHLSLData Указывает, представляет ли этот символ данные на языке шейдеров высокого уровня (HLSL).
IDiaSymbol::get_isHotpatchable Получает флаг, указывающий, был ли модуль скомпилирован с параметром компилятора /hotpatch (Create допускающего оперативное обновление Image) .
IDiaSymbol::get_isLTCG Получает флаг, указывающий, был ли управляемый компилируемого объекта связан с LTCG компоновщика.
IDiaSymbol::get_isMatrixRowMajor Указывает, является ли матрица основной строкой.
IDiaSymbol::get_isMSILNetmodule Получает флаг, указывающий, является ли управляемый компилируемого объекта. netmodule (содержащий только метаданные).
IDiaSymbol::get_isMultipleInheritance Указывает, указывает ли указатель this на элемент данных с множественным наследованием.
IDiaSymbol::get_isNaked Получает флаг, указывающий, имеет ли функция атрибут naked .
IDiaSymbol::get_isOptimizedAway Указывает, оптимизирована ли переменная.
IDiaSymbol::get_isPointerBasedOnSymbolValue Указывает, основан ли указатель this на значении символа.
IDiaSymbol::get_isPointerToDataMember Указывает, является ли этот символ указателем на элемент данных.
IDiaSymbol::get_isPointerToMemberFunction Указывает, является ли этот символ указателем на функцию-член.
IDiaSymbol::get_isReturnValue Указывает, содержит ли переменная возвращаемое значение.
IDiaSymbol::get_isSdl Указывает, компилируется ли модуль с параметром/SDL.
IDiaSymbol::get_isSingleInheritance Указывает, указывает ли указатель this на элемент данных с единственным наследованием.
IDiaSymbol::get_isSplitted Получает флаг, указывающий, были ли данные разделены на статистическую обработку отдельных символов.
IDiaSymbol::get_isStatic Получает флаг, указывающий, является ли слой функции или преобразователя статическим.
IDiaSymbol::get_isStripped Получает флаг, указывающий, удалены ли закрытые символы из файла символов.
IDiaSymbol::get_isVirtualInheritance Указывает, указывает ли указатель this на элемент данных с виртуальным наследованием.
IDiaSymbol::get_language Возвращает язык источника.
IDiaSymbol::get_length Извлекает число байтов памяти, используемое объектом, представленным этим символом.
IDiaSymbol::get_lexicalParent Извлекает ссылку на лексическую родителя символа.
IDiaSymbol::get_lexicalParentId Получает лексическую родительский идентификатор символа.
IDiaSymbol::get_libraryName Возвращает имя файла библиотеки или объектного файла, из которого был загружен объект.
IDiaSymbol::get_liveRangeLength Возвращает длину диапазона адресов, в котором является допустимым локальный символ.
IDiaSymbol::get_liveRangeStartAddressSection Возвращает часть диапазона начального адреса, в которой является допустимым локальный символ.
IDiaSymbol::get_liveRangeStartAddressOffset Возвращает смещение в диапазоне начального адреса, в котором указан допустимый локальный символ.
IDiaSymbol::get_liveRangeStartRelativeVirtualAddress Возвращает начало диапазона адресов, в котором является допустимым локальный символ.
IDiaSymbol::get_locationType Возвращает тип расположения символа данных.
IDiaSymbol::get_lowerBound Извлекает нижнюю границу измерения массива FORTRAN.
IDiaSymbol::get_lowerBoundId Возвращает идентификатор символа нижней границы измерения массива FORTRAN.
IDiaSymbol::get_machineType Возвращает тип целевого ЦП.
IDiaSymbol::get_managed Получает флаг, указывающий, относится ли символ к управляемому коду.
IDiaSymbol::get_memorySpaceKind Извлекает тип пространства памяти.
IDiaSymbol::get_msil Получает флаг, указывающий, относится ли символ к коду на языке MSIL.
IDiaSymbol::get_name Возвращает имя символа.
IDiaSymbol::get_nested Получает флаг, указывающий, является ли определяемый пользователем тип данных вложенным.
IDiaSymbol::get_noInline Получает флаг, указывающий, помечена ли функция атрибутом noinline .
IDiaSymbol::get_noReturn Получает флаг, указывающий, объявлена ли функция с атрибутом noreturn .
IDiaSymbol::get_noStackOrdering Получает флаг, указывающий, не удалось ли выполнять упорядочивание стека в ходе проверки буфера стека.
IDiaSymbol::get_notReached Получает флаг, указывающий, никогда ли не достигается функция или метка.
IDiaSymbol::get_numberOfAcceleratorPointerTags Возвращает число тегов указателя ускорителя в функции- C++ заглушке amp.
IDiaSymbol::get_numberOfModifiers Возвращает количество модификаторов, применяемых к исходному типу.
IDiaSymbol::get_numberOfRegisterIndices Возвращает число индексов регистров.
IDiaSymbol::get_numberOfRows Извлекает количество строк в матрице.
IDiaSymbol::get_numberOfColumns Возвращает число столбцов в матрице.
IDiaSymbol::get_objectFileName Возвращает имя объектного файла.
IDiaSymbol::get_objectPointerType Возвращает тип указателя на объект для метода класса.
IDiaSymbol::get_oemId Возвращает значение oemId символа.
IDiaSymbol::get_oemSymbolId Возвращает значение oemSymbolId символа.
IDiaSymbol::get_offset Возвращает смещение расположения символа.
IDiaSymbol::get_optimizedCodeDebugInfo Получает флаг, указывающий, содержит ли функция или метка оптимизированный код, а также сведения об отладке.
IDiaSymbol::get_overloadedOperator Получает флаг, указывающий, имеет ли определяемый пользователем тип данных перегруженные операторы.
IDiaSymbol::get_packed Получает флаг, указывающий, упакован ли определяемый пользователем тип данных.
IDiaSymbol::get_platform Возвращает тип платформы, для которого была скомпилирована программа или компилируемого объекта.
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_samplerSlot Извлекает слот образца.
IDiaSymbol::get_scoped Получает флаг, указывающий, отображается ли определяемый пользователем тип данных в неглобальной лексической области.
IDiaSymbol::get_signature Возвращает значение подписи символа.
IDiaSymbol::get_sizeInUdt Возвращает размер элемента определяемого пользователем типа.
IDiaSymbol::get_slot Возвращает номер гнезда расположения.
IDiaSymbol::get_sourceFileName Возвращает имя файла исходного кода.
IDiaSymbol::getSrcLineOnTypeDefn Извлекает исходный файл и номер строки, указывающие, где определен определяемый пользователем тип.
IDiaSymbol::get_stride Извлекает шаг матрицы или массива с шагом по шагам.
IDiaSymbol::get_subType Извлекает подтип.
IDiaSymbol::get_subTypeId Возвращает идентификатор подтипа.
IDiaSymbol::get_symbolsFileName Извлекает имя файла, из которого были загружены символы.
IDiaSymbol::get_symIndexId Извлекает уникальный идентификатор символа.
IDiaSymbol::get_symTag Извлекает классификатор типа символа.
IDiaSymbol::get_targetOffset Возвращает раздел смещения целевого объекта преобразователя.
IDiaSymbol::get_targetRelativeVirtualAddress Извлекает относительный виртуальный адрес (RVA) целевого объекта преобразователя.
IDiaSymbol::get_targetSection Извлекает раздел адреса целевого объекта преобразователя.
IDiaSymbol::get_targetVirtualAddress Извлекает виртуальный адрес (ва) целевого объекта преобразователя.
IDiaSymbol::get_textureSlot Извлекает текстурный слот.
IDiaSymbol::get_thisAdjust Извлекает логический элемент настройки this для метода.
IDiaSymbol::get_thunkOrdinal Возвращает тип преобразователя для функции.
IDiaSymbol::get_timeStamp Извлекает метку времени базового исполняемого файла.
IDiaSymbol::get_token Получает маркер метаданных управляемой функции или переменной.
IDiaSymbol::get_type Извлекает ссылку на сигнатуру функции.
IDiaSymbol::get_typeId Возвращает идентификатор типа символа.
IDiaSymbol::get_types Извлекает массив значений типа, относящихся к компилятору, для этого символа.
IDiaSymbol::get_typeIds Извлекает массив значений идентификаторов типов, относящихся к компилятору, для этого символа.
IDiaSymbol::get_uavSlot Извлекает слот UAV.
IDiaSymbol::get_udtKind Извлекает разнообразные определяемые пользователем типы (UDT).
IDiaSymbol::get_unalignedType Получает флаг, указывающий, является ли определяемый пользователем тип данных несогласованным.
IDiaSymbol::get_undecoratedName Извлекает недекорированное имя для C++ декорированного имени или компоновки.
IDiaSymbol::get_undecoratedNameEx Расширение метода get_undecoratedName, которое получает недекорированное имя на основе значения поля расширения.
IDiaSymbol::get_unmodifiedTypeId Возвращает идентификатор исходного (неизмененного) типа.
IDiaSymbol::get_upperBound Извлекает верхнюю границу измерения массива FORTRAN.
IDiaSymbol::get_upperBoundId Возвращает идентификатор символа верхней границы измерения массива FORTRAN.
IDiaSymbol::get_value Возвращает значение константы.
IDiaSymbol::get_virtual Получает флаг, указывающий, является ли функция виртуальной.
IDiaSymbol::get_virtualAddress Извлекает виртуальный адрес (ва) расположения.
IDiaSymbol::get_virtualBaseClass Получает флаг, указывающий, является ли определяемый пользователем тип данных виртуальным базовым классом.
IDiaSymbol::get_virtualBaseDispIndex Получает индекс для виртуальной базовой таблицы смещения.
IDiaSymbol::get_virtualBaseOffset Получает смещение в таблице виртуальных функций виртуальной функции.
IDiaSymbol::get_virtualBasePointerOffset Получает смещение виртуального базового указателя.
IDiaSymbol::get_virtualBaseTableType Возвращает тип указателя виртуальной базовой таблицы.
IDiaSymbol::get_virtualTableShape Извлекает интерфейс символов типа виртуальной таблицы для определяемого пользователем типа.
IDiaSymbol::get_virtualTableShapeId Извлекает идентификатор фигуры виртуальной таблицы для символа.
IDiaSymbol::get_volatileType Получает флаг, указывающий, является ли определяемый пользователем тип данных volatile.

Заметки

Примечания для вызывающих объектов

Получите этот интерфейс, вызвав один из следующих методов:

Пример

В этом примере показано, как отобразить локальные переменные для функции по определенному относительному виртуальному адресу. Также показано, как символы разных типов связаны друг с другом.

Примечание

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

Библиотека: диагуидс. lib

DLL: msdia80.dll

См. также