Поделиться через


IDiaSymbol

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

Синтаксис

IDiaSymbol : IUnknown

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

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

Примечание.

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

Метод Description
IDiaSymbol::findChildren Извлекает все дочерние элементы символа.
IDiaSymbol::findChildrenEx Извлекает дочерние элементы символа. Этот метод является расширенной версией IDiaSymbol::findChildren.
IDiaSymbol::findChildrenExByAddr Извлекает дочерние элементы символа, допустимые по указанному адресу.
IDiaSymbol::findChildrenExByRVA Извлекает дочерние элементы символа, допустимые по указанному относительному виртуальному адресу (RVA).
IDiaSymbol::findChildrenExByVA Извлекает дочерние элементы символа, допустимые по указанному виртуальному адресу.
IDiaSymbol::findInlineFramesByAddr Извлекает перечисление, позволяющее клиенту выполнять итерацию по всем встроенным кадрам в заданном адресе.
IDiaSymbol::findInlineFramesByRVA Извлекает перечисление, позволяющее клиенту выполнять итерацию по всем встроенным кадрам на указанном относительном виртуальном адресе (RVA).
IDiaSymbol::findInlineFramesByVA Извлекает перечисление, позволяющее клиенту выполнять итерацию по всем встроенным кадрам на указанном виртуальном адресе (VA).
IDiaSymbol::findInlineeLines Извлекает перечисление, позволяющее клиенту выполнять итерацию по номеру строки всех функций, которые встраиваются прямо или косвенно в этот символ.
IDiaSymbol::findInlineeLinesByAddr Извлекает перечисление, позволяющее клиенту выполнять итерацию по номеру строки всех функций, которые встраиваются прямо или косвенно в этот символ в пределах указанного диапазона адресов.
IDiaSymbol::findInlineeLinesByRVA Извлекает перечисление, позволяющее клиенту выполнять итерацию по номеру строки всех функций, которые встраиваются напрямую или косвенно в этот символ в пределах указанного относительного виртуального адреса (RVA).
IDiaSymbol::findInlineeLinesByVA Извлекает перечисление, позволяющее клиенту выполнять итерацию по номеру строки всех функций, которые встраиваются напрямую или косвенно в этот символ в пределах указанного виртуального адреса (VA).
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 Извлекает флаг, указывающий, определен ли определяемый пользователем тип данных какие-либо операторы приведения.
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 Извлекает флаг, указывающий, был ли модуль преобразован из common Intermediate Language (CIL) в машинный код.
IDiaSymbol::get_isDataAligned Извлекает флаг, указывающий, соответствуют ли элементы определяемого пользователем типа данных определенной границе.
IDiaSymbol::get_isHLSLData Указывает, представляет ли этот символ данные языка шейдера высокого уровня (HLSL).
IDiaSymbol::get_isHotpatchable Извлекает флаг, указывающий, компилируется ли модуль с параметром компилятора /hotpatch (Create Hotpatchable Image).
IDiaSymbol::get_isLTCG Извлекает флаг, указывающий, связан ли управляемый компилятор с LTCG компоновщика.
IDiaSymbol::get_isMatrixRowMajor Указывает, является ли матрица основной строкой.
IDiaSymbol::get_isMSILNetmodule Извлекает флаг, указывающий, является ли управляемый компилятор .netmodule (содержащий только метаданные).
IDiaSymbol::get_isMultipleInheritance Указывает, указывает, указывает ли this указатель на член данных с несколькими наследованием.
IDiaSymbol::get_isNaked Извлекает флаг, указывающий, имеет ли функция голый атрибут.
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 Извлекает флаг, указывающий, является ли функция или слой thunk статическим.
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 Извлекает флаг, указывающий, относится ли символ к коду MICROSOFT Intermediate Language (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 Извлекает раздел смещения целевого объекта thunk.
IDiaSymbol::get_targetRelativeVirtualAddress Извлекает относительный виртуальный адрес (RVA) целевого объекта thunk.
IDiaSymbol::get_targetSection Извлекает раздел адреса целевого объекта thunk.
IDiaSymbol::get_targetVirtualAddress Извлекает виртуальный адрес (VA) целевого объекта thunk.
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_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 Извлекает виртуальный адрес (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 Извлекает флаг, указывающий, является ли определяемый пользователем тип данных переменным.

Замечания

Заметки для вызывающих абонентов

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

Пример

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

Примечание.

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." );
        }
    };
}

Requirements

Header: Dia2.h

Библиотека: diaguids.lib

DLL: msdia80.dll

См. также