IDiaSymbol

Describe las propiedades de una instancia de símbolo.

Syntax

IDiaSymbol : IUnknown

Métodos en orden alfabético

En la tabla siguiente se muestran los métodos de IDiaSymbol.

Nota

Los símbolos devolverán datos significativos solo para algunos de estos métodos, en función del tipo de símbolo. Si un método devuelve S_OK, ese método ha devuelto datos significativos.

Método Descripción
IDiaSymbol::findChildren Recupera todos los elementos secundarios del símbolo.
IDiaSymbol::findChildrenEx Recupera los elementos secundarios del símbolo. Este método es la versión extendida de IDiaSymbol::findChildren.
IDiaSymbol::findChildrenExByAddr Recupera los elementos secundarios del símbolo que son válidos en una dirección especificada.
IDiaSymbol::findChildrenExByRVA Recupera los elementos secundarios del símbolo que son válidos en una dirección virtual relativa (RVA).
IDiaSymbol::findChildrenExByVA Recupera los elementos secundarios del símbolo que son válidos en una dirección virtual especificada.
IDiaSymbol::findInlineFramesByAddr Recupera una enumeración que permite a un cliente iterar por todos los marcos insertados en una dirección determinada.
IDiaSymbol::findInlineFramesByRVA Recupera una enumeración que permite a un cliente iterar por todos los marcos insertados en una dirección virtual relativa (RVA) determinada.
IDiaSymbol::findInlineFramesByVA Recupera una enumeración que permite a un cliente iterar por todos los marcos insertados en una dirección virtual (VA) determinada.
IDiaSymbol::findInlineeLines Recupera una enumeración que permite a un cliente iterar por la información de número de línea de todas las funciones insertadas, directa o indirectamente, en este símbolo.
IDiaSymbol::findInlineeLinesByAddr Recupera una enumeración que permite a un cliente iterar por la información de número de línea de todas las funciones insertadas, directa o indirectamente, en este símbolo dentro del intervalo de direcciones especificado.
IDiaSymbol::findInlineeLinesByRVA Recupera una enumeración que permite a un cliente iterar por la información de número de línea de todas las funciones insertadas, directa o indirectamente, en este símbolo dentro de la dirección virtual relativa (RVA) especificada.
IDiaSymbol::findInlineeLinesByVA Recupera una enumeración que permite a un cliente iterar por la información de número de línea de todas las funciones insertadas, directa o indirectamente, en este símbolo dentro de la dirección virtual (VA) especificada.
IDiaSymbol::findSymbolsByRVAForAcceleratorPointerTag Dado un valor de etiqueta correspondiente, este método devuelve una enumeración de símbolos contenidos en esta función de código auxiliar en una dirección virtual relativa especificada.
IDiaSymbol::findSymbolsForAcceleratorPointerTag Devuelve el número de etiquetas de puntero de acelerador en una función de código auxiliar de C++ AMP.
IDiaSymbol::get_acceleratorPointerTags Devuelve todos los valores de etiqueta de puntero de acelerador que se corresponden a una función de código auxiliar del acelerador de C++ AMP.
IDiaSymbol::get_access Recupera el modificador de acceso de un miembro de clase.
IDiaSymbol::get_addressOffset Recupera la parte de desplazamiento de una ubicación de dirección.
IDiaSymbol::get_addressSection Recupera la parte de sección de una ubicación de dirección.
IDiaSymbol::get_addressTaken Recupera una marca que indica si otro símbolo hace referencia a esta dirección.
IDiaSymbol::get_age Recupera el valor de antigüedad de una base de datos de programa.
IDiaSymbol::get_arrayIndexType Recupera el identificador de símbolo del tipo de índice de matriz.
IDiaSymbol::get_arrayIndexTypeId Recupera el identificador de tipo del índice de la matriz del símbolo.
IDiaSymbol::get_backEndMajor Recupera el número de versión principal del back-end.
IDiaSymbol::get_backEndMinor Recupera el número de versión secundaria del back-end.
IDiaSymbol::get_backEndBuild Recupera el número de compilación del back-end.
IDiaSymbol::get_baseDataOffset Recupera el desplazamiento de datos base.
IDiaSymbol::get_baseDataSlot Recupera la ranura de datos base.
IDiaSymbol::get_baseSymbol Recupera el símbolo en el que se basa el puntero.
IDiaSymbol::get_baseSymbolId Recupera el id. de símbolo en el que se basa el puntero.
IDiaSymbol::get_baseType Recupera la etiqueta de tipo de un tipo simple.
IDiaSymbol::get_bitPosition Recupera la posición de bits de una ubicación.
IDiaSymbol::get_builtInKind Recupera un tipo integrado del tipo HLSL.
IDiaSymbol::get_callingConvention Devuelve un indicador de la convención de llamada de un método.
IDiaSymbol::get_classParent Recupera una referencia al elemento primario de clase del símbolo.
IDiaSymbol::get_classParentId Recupera el identificador primario de clase del símbolo.
IDiaSymbol::get_code Recupera una marca que indica si el símbolo hace referencia a una dirección de código.
IDiaSymbol::get_compilerGenerated Recupera una marca que indica si el símbolo lo ha generado el compilador.
IDiaSymbol::get_compilerName Recupera el nombre del compilador usado para crear el compilando.
IDiaSymbol::get_constructor Recupera una marca que indica si el tipo de datos definido por el usuario tiene un constructor.
IDiaSymbol::get_container Recupera el símbolo contenedor de este símbolo.
IDiaSymbol::get_constType Recupera una marca que indica si el tipo de datos definido por el usuario es constante.
IDiaSymbol::get_count Recupera el número de elementos de una lista o matriz.
IDiaSymbol::get_countLiveRanges Recupera el número de intervalos de direcciones válidos asociados al símbolo local.
IDiaSymbol::get_customCallingConvention Recupera una marca que indica si la función usa una convención de llamada personalizada.
IDiaSymbol::get_dataBytes Recupera los bytes de datos de un símbolo OEM.
IDiaSymbol::get_dataKind Recupera la clasificación variable de un símbolo de datos.
IDiaSymbol::get_editAndContinueEnabled Recupera la marca que describe las características Editar y continuar del programa o unidad compilados.
IDiaSymbol::get_farReturn Recupera una marca que indica si la función usa una devolución lejana.
IDiaSymbol::get_frontEndMajor Recupera el número de versión principal del front-end.
IDiaSymbol::get_frontEndMinor Recupera el número de versión secundaria del front-end.
IDiaSymbol::get_frontEndBuild Recupera el número de compilación del front-end.
IDiaSymbol::get_function Recupera una marca que indica si el símbolo público hace referencia a una función.
IDiaSymbol::get_guid Recupera el GUID del símbolo.
IDiaSymbol::get_hasAlloca Recupera una marca que indica si la función contiene una llamada a alloca.
IDiaSymbol::get_hasAssignmentOperator Recupera una marca que indica si el tipo de datos definido por el usuario tiene definidos operadores de asignación.
IDiaSymbol::get_hasCastOperator Recupera una marca que indica si el tipo de datos definido por el usuario tiene definidos operadores de conversión.
IDiaSymbol::get_hasDebugInfo Recupera una marca que indica si el compilando contiene información de depuración.
IDiaSymbol::get_hasEH Recupera una marca que indica si la función tiene un controlador de excepciones de estilo C++.
IDiaSymbol::get_hasEHa Recupera una marca que indica si la función tiene un controlador de excepciones asincrónico.
IDiaSymbol::get_hasInlAsm Recupera una marca que indica si la función tiene un ensamblado insertado.
IDiaSymbol::get_hasLongJump Recupera una marca que indica si la función contiene un comando longjmp (parte del control de excepciones de estilo C).
IDiaSymbol::get_hasManagedCode Recupera una marca que indica si el módulo contiene código administrado.
IDiaSymbol::get_hasNestedTypes Recupera una marca que indica si el tipo de datos definido por el usuario tiene definiciones de tipo anidadas.
IDiaSymbol::get_hasSecurityChecks Recupera una marca que indica si la función o el compilando tiene comprobaciones de seguridad compiladas (mediante el modificador del compilador /GS (Comprobación de seguridad del búfer)).
IDiaSymbol::get_hasSEH Recupera una marca que indica si la función tiene control de excepciones estructuradas de estilo Win32.
IDiaSymbol::get_hasSetJump Recupera una marca que indica si la función contiene un comando setjmp.
IDiaSymbol::get_indirectVirtualBaseClass Recupera una marca que indica si el tipo de datos definido por el usuario es una clase base virtual indirecta.
IDiaSymbol::get_InlSpec Recupera una marca que indica si la función se ha marcado con el atributo inline.
IDiaSymbol::get_interruptReturn Recupera una marca que indica si la función tiene una devolución de la instrucción de interrupción.
IDiaSymbol::get_intro Recupera una marca que indica si la función es la función virtual de clase base.
IDiaSymbol::get_isAcceleratorGroupSharedLocal Recupera una marca que indica si el símbolo se corresponde a una variable local compartida de grupo en el código compilado para un acelerador de C++ AMP.
IDiaSymbol::get_isAcceleratorPointerTagLiveRange Recupera una marca que indica si el símbolo se corresponde al símbolo de intervalo de definición para el componente de etiqueta de una variable de puntero en el código compilado para un acelerador de C++ AMP. El símbolo del intervalo de definición es la ubicación de una variable para un intervalo de direcciones.
IDiaSymbol::get_isAcceleratorStubFunction Indica si el símbolo se corresponde a un símbolo de función de nivel superior para un sombreador compilado para un acelerador que corresponde a una llamada a parallel_for_each.
IDiaSymbol::get_isAggregated Recupera una marca que indica si los datos forman parte de un agregado de muchos símbolos.
IDiaSymbol::get_isCTypes Recupera una marca que indica si el archivo de símbolos contiene tipos de C.
IDiaSymbol::get_isCVTCIL Recupera una marca que indica si el módulo se ha convertido de Lenguaje intermedio común (CIL) a código nativo.
IDiaSymbol::get_isDataAligned Recupera una marca que indica si los elementos de un tipo de datos definido por el usuario están alineados con un límite específico.
IDiaSymbol::get_isHLSLData Especifica si este símbolo representa datos de lenguaje de sombreador de alto nivel (HLSL).
IDiaSymbol::get_isHotpatchable Recupera una marca que indica si el módulo se ha compilado con el modificador del compilador /hotpatch (Crear imagen a la que aplicar una revisión activa).
IDiaSymbol::get_isLTCG Recupera una marca que indica si el compilando administrado estaba vinculado con el LTCG del vinculador.
IDiaSymbol::get_isMatrixRowMajor Especifica si la matriz es la fila principal.
IDiaSymbol::get_isMSILNetmodule Recupera una marca que indica si el compilado administrado es de tipo .netmodule (que solo contiene metadatos).
IDiaSymbol::get_isMultipleInheritance Especifica si el puntero this apunta a un miembro de datos con herencia múltiple.
IDiaSymbol::get_isNaked Recupera una marca que indica si la función tiene el atributo naked.
IDiaSymbol::get_isOptimizedAway Especifica si la variable está optimizada.
IDiaSymbol::get_isPointerBasedOnSymbolValue Especifica si el puntero this se basa en un valor de símbolo.
IDiaSymbol::get_isPointerToDataMember Especifica si este símbolo es un puntero a un miembro de datos.
IDiaSymbol::get_isPointerToMemberFunction Especifica si este símbolo es un puntero a una función miembro.
IDiaSymbol::get_isReturnValue Especifica si la variable contiene un valor devuelto.
IDiaSymbol::get_isSdl Especifica si el módulo se compila con la opción /SDL.
IDiaSymbol::get_isSingleInheritance Especifica si el puntero this apunta a un miembro de datos con herencia única.
IDiaSymbol::get_isSplitted Recupera una marca que indica si los datos se han dividido en un agregado de símbolos independientes.
IDiaSymbol::get_isStatic Recupera una marca que indica si una función o una capa de código thunk es estática.
IDiaSymbol::get_isStripped Recupera una marca que indica si se han quitado símbolos privados del archivo de símbolos.
IDiaSymbol::get_isVirtualInheritance Especifica si el puntero this apunta a un miembro de datos con herencia virtual.
IDiaSymbol::get_language Recupera el lenguaje del origen.
IDiaSymbol::get_length Recupera el número de bytes de memoria utilizados por el objeto representado por este símbolo.
IDiaSymbol::get_lexicalParent Recupera una referencia al elemento primario léxico del símbolo.
IDiaSymbol::get_lexicalParentId Recupera el identificador primario léxico del símbolo.
IDiaSymbol::get_libraryName Recupera el nombre de archivo de la biblioteca o archivo de objeto desde el que se ha cargado el objeto.
IDiaSymbol::get_liveRangeLength Devuelve la longitud del intervalo de direcciones en el que el símbolo local es válido.
IDiaSymbol::get_liveRangeStartAddressSection Devuelve la parte de sección del intervalo de direcciones inicial en el que el símbolo local es válido.
IDiaSymbol::get_liveRangeStartAddressOffset Devuelve la parte de desplazamiento del intervalo de direcciones inicial en el que el símbolo local es válido.
IDiaSymbol::get_liveRangeStartRelativeVirtualAddress Devuelve el inicio del intervalo de direcciones en el que el símbolo local es válido.
IDiaSymbol::get_locationType Recupera el tipo de ubicación de un símbolo de datos.
IDiaSymbol::get_lowerBound Recupera el límite inferior de una dimensión de matriz FORTRAN.
IDiaSymbol::get_lowerBoundId Recupera el identificador de símbolo del límite inferior de una dimensión de matriz FORTRAN.
IDiaSymbol::get_machineType Recupera el tipo de CPU de destino.
IDiaSymbol::get_managed Recupera una marca que indica si el símbolo hace referencia a código administrado.
IDiaSymbol::get_memorySpaceKind Recupera el tipo de espacio de memoria.
IDiaSymbol::get_msil Recupera una marca que indica si el símbolo hace referencia al código de Lenguaje intermedio de Microsoft (MSIL).
IDiaSymbol::get_name Recupera el nombre del símbolo.
IDiaSymbol::get_nested Recupera una marca que indica si el tipo de datos definido por el usuario está anidado.
IDiaSymbol::get_noInline Recupera una marca que indica si la función está marcada con el atributo noinline.
IDiaSymbol::get_noReturn Recupera una marca que indica si la función se ha declarado con el atributo noreturn.
IDiaSymbol::get_noStackOrdering Recupera una marca que indica si no se puede realizar ninguna ordenación de pila como parte de la comprobación del búfer de pila.
IDiaSymbol::get_notReached Recupera una marca que indica si nunca se alcanza la función o etiqueta.
IDiaSymbol::get_numberOfAcceleratorPointerTags Devuelve el número de etiquetas de puntero de acelerador en una función de código auxiliar de C++ AMP.
IDiaSymbol::get_numberOfModifiers Recupera el número de modificadores que se aplican al tipo original.
IDiaSymbol::get_numberOfRegisterIndices Recupera el número de índices de registro.
IDiaSymbol::get_numberOfRows Recupera el número de filas de la matriz.
IDiaSymbol::get_numberOfColumns Recupera el número de columnas de la matriz.
IDiaSymbol::get_objectFileName Recupera el nombre del archivo objeto.
IDiaSymbol::get_objectPointerType Recupera el tipo del puntero de objeto para un método de clase.
IDiaSymbol::get_oemId Recupera el valor oemId del símbolo.
IDiaSymbol::get_oemSymbolId Recupera el valor oemSymbolId del símbolo.
IDiaSymbol::get_offset Recupera el desplazamiento de la ubicación del símbolo.
IDiaSymbol::get_optimizedCodeDebugInfo Recupera una marca que indica si la función o etiqueta contiene código optimizado, así como información de depuración.
IDiaSymbol::get_overloadedOperator Recupera una marca que indica si el tipo de datos definido por el usuario tiene operadores sobrecargados.
IDiaSymbol::get_packed Recupera una marca que indica si el tipo de datos definido por el usuario está empaquetado.
IDiaSymbol::get_platform Recupera el tipo de plataforma para el que se ha compilado el programa o compilando.
IDiaSymbol::get_pure Recupera una marca que indica si la función es virtual pura.
IDiaSymbol::get_rank Recupera el rango de una matriz multidimensional FORTRAN.
IDiaSymbol::get_reference Recupera una marca que indica si un tipo de puntero es una referencia.
IDiaSymbol::get_registerId Recupera el designador de registro de la ubicación.
IDiaSymbol::get_registerType Recupera el tipo de registro.
IDiaSymbol::get_relativeVirtualAddress Recupera la dirección virtual relativa (RVA) de la ubicación.
IDiaSymbol::get_restrictedType Especifica si el puntero this está marcado como restringido.
IDiaSymbol::get_samplerSlot Recupera la ranura de muestra.
IDiaSymbol::get_scoped Recupera una marca que indica si el tipo de datos definido por el usuario aparece en un ámbito léxico no global.
IDiaSymbol::get_signature Recupera el valor de signatura del símbolo.
IDiaSymbol::get_sizeInUdt Recupera el tamaño de un miembro de un tipo definido por el usuario.
IDiaSymbol::get_slot Recupera el número de ranura de la ubicación.
IDiaSymbol::get_sourceFileName Recupera el nombre del archivo de código fuente.
IDiaSymbol::getSrcLineOnTypeDefn Recupera el archivo de código fuente y el número de línea que indican dónde se define un tipo definido por el usuario especificado.
IDiaSymbol::get_stride Recupera el intervalo de la matriz o la matriz escalada.
IDiaSymbol::get_subType Recupera el subtipo.
IDiaSymbol::get_subTypeId Recupera el id. de subtipo.
IDiaSymbol::get_symbolsFileName Recupera el nombre del archivo desde el que se han cargado los símbolos.
IDiaSymbol::get_symIndexId Recupera el identificador de símbolo único.
IDiaSymbol::get_symTag Recupera el clasificador de tipos de símbolos.
IDiaSymbol::get_targetOffset Recupera la sección de desplazamiento de un destino de código thunk.
IDiaSymbol::get_targetRelativeVirtualAddress Recupera la dirección virtual relativa (RVA) de un destino de código thunk.
IDiaSymbol::get_targetSection Recupera la sección de dirección de un destino de código thunk.
IDiaSymbol::get_targetVirtualAddress Recupera la dirección virtual (VA) de un destino de código thunk.
IDiaSymbol::get_textureSlot Recupera la ranura de textura.
IDiaSymbol::get_thisAdjust Recupera el ajustador this lógico para el método.
IDiaSymbol::get_thunkOrdinal Recupera el tipo de código thunk de una función.
IDiaSymbol::get_timeStamp Recupera la marca de tiempo del archivo ejecutable subyacente.
IDiaSymbol::get_token Recupera el token de metadatos de una función o variable administrada.
IDiaSymbol::get_type Recupera una referencia a la signatura de función.
IDiaSymbol::get_typeId Recupera el identificador de tipo del símbolo.
IDiaSymbol::get_types Recupera una matriz de valores de tipo específicos del compilador para este símbolo.
IDiaSymbol::get_typeIds Recupera una matriz de valores de identificador de tipo específicos del compilador para este símbolo.
IDiaSymbol::get_uavSlot Recupera la ranura uav.
IDiaSymbol::get_udtKind Recupera la variedad de un tipo definido por el usuario (UDT).
IDiaSymbol::get_unalignedType Recupera una marca que indica si el tipo de datos definido por el usuario está sin alinear.
IDiaSymbol::get_undecoratedName Recupera el nombre no representativo de un nombre representativo de C++ o un nombre de vinculación.
IDiaSymbol::get_undecoratedNameEx Extensión del método get_undecoratedName que recupera el nombre no representativo en función del valor de un campo de extensión.
IDiaSymbol::get_unmodifiedTypeId Recupera el id. del tipo original (sin modificar).
IDiaSymbol::get_upperBound Recupera el límite superior de una dimensión de matriz FORTRAN.
IDiaSymbol::get_upperBoundId Recupera el identificador de símbolo del límite superior de una dimensión de matriz FORTRAN.
IDiaSymbol::get_value Recupera el valor de una constante.
IDiaSymbol::get_virtual Recupera una marca que indica si la función es virtual.
IDiaSymbol::get_virtualAddress Recupera la dirección virtual (VA) de la ubicación.
IDiaSymbol::get_virtualBaseClass Recupera una marca que indica si el tipo de datos definido por el usuario es una clase base virtual.
IDiaSymbol::get_virtualBaseDispIndex Recupera el índice a la tabla de desplazamiento base virtual.
IDiaSymbol::get_virtualBaseOffset Recupera el desplazamiento en la tabla de funciones virtuales de una función virtual.
IDiaSymbol::get_virtualBasePointerOffset Recupera el desplazamiento del puntero base virtual.
IDiaSymbol::get_virtualBaseTableType Recupera el tipo de un puntero de tabla base virtual.
IDiaSymbol::get_virtualTableShape Recupera la interfaz de símbolos del tipo de la tabla virtual para un tipo definido por el usuario.
IDiaSymbol::get_virtualTableShapeId Recupera el identificador de forma de tabla virtual del símbolo.
IDiaSymbol::get_volatileType Recupera una marca que indica si el tipo de datos definido por el usuario es volátil.

Comentarios

Notas para autores de la llamada

Para obtener esta interfaz, llame a uno de los métodos siguientes:

Ejemplo

En este ejemplo se muestra cómo mostrar las variables locales de una función en una dirección virtual relativa determinada. También se muestra cómo se relacionan los símbolos de diferentes tipos entre sí.

Nota

CDiaBSTR es una clase que encapsula BSTR y controla automáticamente la liberación de la cadena cuando la creación de instancias sale del ámbito.

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

Requisitos

Header: Dia2.h

Biblioteca: diaguids.lib

DLL: msdia80.dll

Vea también