IDiaStackFrameIDiaStackFrame

Expose les propriétés d’un frame de pile.Exposes the properties of a stack frame.

SyntaxeSyntax

IDiaStackFrame : IUnknown  

Méthodes dans l'ordre VtableMethods in Vtable Order

Les méthodes prises en charge par cette interface sont les suivantes :The following are methods supported by this interface:

MéthodeMethod DescriptionDescription
IDiaStackFrame::get_allocatesBasePointerIDiaStackFrame::get_allocatesBasePointer Récupère un indicateur qui signale que le pointeur de base est alloué pour le code dans cette plage d’adresses.Retrieves a flag indicating that the base pointer is allocated for code in this address range. Cette méthode est déconseillée.This method is deprecated.
IDiaStackFrame::get_baseIDiaStackFrame::get_base Récupère la base de l’adresse de l’image.Retrieves the address base of the frame.
IDiaStackFrame::get_cplusplusExceptionHandlingIDiaStackFrame::get_cplusplusExceptionHandling Récupère un indicateur qui signale que des exceptions C++ est en vigueur.Retrieves a flag indicating that C++ exception handling is in effect.
IDiaStackFrame::get_functionStartIDiaStackFrame::get_functionStart Récupère un indicateur qui signale que le bloc contient le point d’entrée d’une fonction.Retrieves a flag indicating that the block contains the entry point of a function.
IDiaStackFrame::get_lengthLocalsIDiaStackFrame::get_lengthLocals Récupère le nombre d’octets de l’objet d’un push sur la pile de variables locales.Retrieves the number of bytes of local variables pushed on the stack.
IDiaStackFrame::get_lengthParamsIDiaStackFrame::get_lengthParams Récupère le nombre d’octets de l’objet d’un push sur la pile de paramètres.Retrieves the number of bytes of parameters pushed on the stack.
IDiaStackFrame::get_lengthPrologIDiaStackFrame::get_lengthProlog Récupère le nombre d’octets de code de prologue dans le blocRetrieves the number of bytes of prologue code in the block
IDiaStackFrame::get_lengthSavedRegistersIDiaStackFrame::get_lengthSavedRegisters Récupère le nombre d’octets de l’objet d’un push sur la pile de registres enregistrés.Retrieves the number of bytes of saved registers pushed on the stack.
IDiaStackFrame::get_localsBaseIDiaStackFrame::get_localsBase Récupère la base de l’adresse des variables locales.Retrieves the address base of the locals.
IDiaStackFrame::get_maxStackIDiaStackFrame::get_maxStack Récupère le nombre maximal d’octets ajoutée à la pile dans le frame.Retrieves the maximum number of bytes pushed on the stack in the frame.
IDiaStackFrame::get_rawLVarInstanceValueIDiaStackFrame::get_rawLVarInstanceValue Récupère la valeur de la variable locale spécifiée comme octets bruts.Retrieves the value of the specified local variable as raw bytes.
IDiaStackFrame::get_registerValueIDiaStackFrame::get_registerValue Récupère la valeur d’un registre spécifié.Retrieves the value of a specified register.
IDiaStackFrame::get_returnAddressIDiaStackFrame::get_returnAddress Récupère l’adresse de retour de l’image.Retrieves the return address of the frame.
IDiaStackFrame::get_sizeIDiaStackFrame::get_size Récupère la taille de l’image en octets.Retrieves the size of the frame in bytes.
IDiaStackFrame::get_systemExceptionHandlingIDiaStackFrame::get_systemExceptionHandling Récupère un indicateur qui indique que la gestion des exceptions de système est en vigueur.Retrieves a flag indicating that system exception handling is in effect.
IDiaStackFrame::get_typeIDiaStackFrame::get_type Récupère le type de frame.Retrieves the frame type.

NotesRemarks

Un frame de pile est une abstraction d’un appel de fonction pendant son exécution.A stack frame is an abstraction of a function call during its execution.

Remarques pour les appelantsNotes for Callers

Obtenez cette interface en appelant le IDiaEnumStackFrames::Next (méthode).Obtain this interface by calling the IDiaEnumStackFrames::Next method. Consultez le IDiaEnumStackFrames interface pour obtenir un exemple sur l’obtention du IDiaStackFrame interface.See the IDiaEnumStackFrames interface for an example on obtaining the IDiaStackFrame interface.

ExempleExample

Cet exemple affiche les différents attributs d’un frame de pile.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);  
        }  
    }  
}  

SpécificationsRequirements

En-tête : Dia2.hHeader: Dia2.h

Bibliothèque : diaguids.libLibrary: diaguids.lib

DLL : msdia80.dllDLL: msdia80.dll

Voir aussiSee Also

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