IDiaStackFrameIDiaStackFrame

Expone las propiedades de un marco de pila.Exposes the properties of a stack frame.

SintaxisSyntax

IDiaStackFrame : IUnknown  

Métodos en orden de VtableMethods in Vtable Order

Éstos son métodos admitidos por esta interfaz:The following are methods supported by this interface:

MétodoMethod DescripciónDescription
IDiaStackFrame::get_allocatesBasePointerIDiaStackFrame::get_allocatesBasePointer Recupera una marca que indica que el puntero base se asigna para el código en este intervalo de direcciones.Retrieves a flag indicating that the base pointer is allocated for code in this address range. Este método está en desuso.This method is deprecated.
IDiaStackFrame::get_baseIDiaStackFrame::get_base Recupera la base de la dirección del marco.Retrieves the address base of the frame.
IDiaStackFrame::get_cplusplusExceptionHandlingIDiaStackFrame::get_cplusplusExceptionHandling Recupera una marca que indica que el control de excepciones de C++ está en vigor.Retrieves a flag indicating that C++ exception handling is in effect.
IDiaStackFrame::get_functionStartIDiaStackFrame::get_functionStart Recupera una marca que indica que el bloque contiene el punto de entrada de una función.Retrieves a flag indicating that the block contains the entry point of a function.
IDiaStackFrame::get_lengthLocalsIDiaStackFrame::get_lengthLocals Recupera el número de bytes de las variables locales que se insertan en la pila.Retrieves the number of bytes of local variables pushed on the stack.
IDiaStackFrame::get_lengthParamsIDiaStackFrame::get_lengthParams Recupera el número de bytes de parámetros que se insertan en la pila.Retrieves the number of bytes of parameters pushed on the stack.
IDiaStackFrame::get_lengthPrologIDiaStackFrame::get_lengthProlog Recupera el número de bytes del código de prólogo en el bloqueRetrieves the number of bytes of prologue code in the block
IDiaStackFrame::get_lengthSavedRegistersIDiaStackFrame::get_lengthSavedRegisters Recupera el número de bytes de registros guardados insertado en la pila.Retrieves the number of bytes of saved registers pushed on the stack.
IDiaStackFrame::get_localsBaseIDiaStackFrame::get_localsBase Recupera la base de la dirección de las variables locales.Retrieves the address base of the locals.
IDiaStackFrame::get_maxStackIDiaStackFrame::get_maxStack Recupera el número máximo de bytes que se insertan en la pila en el marco.Retrieves the maximum number of bytes pushed on the stack in the frame.
IDiaStackFrame::get_rawLVarInstanceValueIDiaStackFrame::get_rawLVarInstanceValue Recupera el valor de la variable local especificada como bytes sin formato.Retrieves the value of the specified local variable as raw bytes.
IDiaStackFrame::get_registerValueIDiaStackFrame::get_registerValue Recupera el valor de un registro especificado.Retrieves the value of a specified register.
IDiaStackFrame::get_returnAddressIDiaStackFrame::get_returnAddress Recupera la dirección de devolución del marco.Retrieves the return address of the frame.
IDiaStackFrame::get_sizeIDiaStackFrame::get_size Recupera el tamaño de la trama en bytes.Retrieves the size of the frame in bytes.
IDiaStackFrame::get_systemExceptionHandlingIDiaStackFrame::get_systemExceptionHandling Recupera una marca que indica que el control de excepciones de sistema está en vigor.Retrieves a flag indicating that system exception handling is in effect.
IDiaStackFrame::get_typeIDiaStackFrame::get_type Recupera el tipo de marco.Retrieves the frame type.

ComentariosRemarks

Un marco de pila es una abstracción de una llamada de función durante su ejecución.A stack frame is an abstraction of a function call during its execution.

Notas para los llamadoresNotes for Callers

Obtener esta interfaz mediante una llamada a la idiaenumstackframes:: Next método.Obtain this interface by calling the IDiaEnumStackFrames::Next method. Consulte la IDiaEnumStackFrames interfaz para obtener un ejemplo acerca de cómo obtener el IDiaStackFrame interfaz.See the IDiaEnumStackFrames interface for an example on obtaining the IDiaStackFrame interface.

EjemploExample

Este ejemplo muestra varios atributos de un marco de pila.This example displays various attributes of a stack frame.

void PrintStackFrame(IDiaStackFrame* pFrame)  
{  
    if (pFrame != NULL)  
    {  
        ULONGLONG bottom = 0;  
        ULONGLONG top    = 0;  

        if (pFrame->get_base(&bottom) == S_OK &&  
            pFrame->get_registerValue( CV_REG_ESP, &top ) == S_OK )  
        {  
             printf("range = 0x%08I64x - 0x%08I64x\n", bottom, top);  
        }  

        ULONGLONG returnAddress = 0;  
        if (pFrame->get_returnAddress(&returnAddress) == S_OK)  
        {  
             printf("return address = 0x%08I64x\n", returnAddress);  
        }  

        DWORD lengthFrame     = 0;  
        DWORD lengthLocals    = 0;  
        DWORD lengthParams    = 0;  
        DWORD lengthProlog    = 0;  
        DWORD lengthSavedRegs = 0;  
        if (pFrame->get_size(&lengthFrame) == S_OK &&  
            pFrame->get_lengthLocals(&lengthLocals) == S_OK &&  
            pFrame->get_lengthParams(&lengthParams) == S_OK &&  
            pFrame->get_lengthProlog(&lengthProlog) == S_OK &&  
            pFrame->get_lengthSavedRegisters(&lengthSavedRegs) == S_OK)  
        {  
            printf("stack frame size          = 0x%08lx bytes\n", lengthFrame);  
            printf("length of locals          = 0x%08lx bytes\n", lengthLocals);  
            printf("length of parameters      = 0x%08lx bytes\n", lengthParams);  
            printf("length of prolog          = 0x%08lx bytes\n", lengthProlog);  
            printf("length of saved registers = 0x%08lx bytes\n", lengthSavedRegs);  
        }  
    }  
}  

RequisitosRequirements

Encabezado: Dia2.hHeader: Dia2.h

Biblioteca: diaguids.libLibrary: diaguids.lib

DLL: msdia80.dllDLL: msdia80.dll

Vea tambiénSee Also

Interfaces (Debug Interface Access SDK) Interfaces (Debug Interface Access SDK)
IDiaEnumStackFrames IDiaEnumStackFrames
Idiaenumstackframes:: Next IDiaEnumStackFrames::Next
IDiaStackWalkFrameIDiaStackWalkFrame