IDiaStackFrame
Expose les propriétés d’un frame de pile.
Syntaxe
IDiaStackFrame : IUnknown
Méthodes dans l'ordre Vtable
Voici les méthodes prises en charge par cette interface :
Méthode | Description |
---|---|
IDiaStackFrame::get_allocatesBasePointer | Récupère un indicateur spécifiant si le pointeur de base est alloué pour le code dans cette plage d’adresses. Cette méthode est déconseillée. |
IDiaStackFrame::get_base | Récupère la base d’adresse du cadre. |
IDiaStackFrame::get_cplusplusExceptionHandling | Récupère un indicateur spécifiant que la gestion des exceptions C++ est en vigueur. |
IDiaStackFrame::get_functionStart | Récupère un indicateur spécifiant que le bloc contient le point d’entrée d’une fonction. |
IDiaStackFrame::get_lengthLocals | Récupère le nombre d’octets de variables locales envoyées sur la pile. |
IDiaStackFrame::get_lengthParams | Récupère le nombre d’octets de paramètres envoyés sur la pile. |
IDiaStackFrame::get_lengthProlog | Récupère le nombre d’octets de code de prologue dans le bloc |
IDiaStackFrame::get_lengthSavedRegisters | Récupère le nombre d’octets de paramètres envoyés sur la pile. |
IDiaStackFrame::get_localsBase | Récupère la base d’adresses des variables locales. |
IDiaStackFrame::get_maxStack | Récupère le nombre maximal d’octets poussés dans la pile de l’image. |
IDiaStackFrame::get_rawLVarInstanceValue | Récupère la valeur de la variable locale spécifiée en octets bruts. |
IDiaStackFrame::get_registerValue | Récupère la valeur d’un registre spécifié. |
IDiaStackFrame::get_returnAddress | Récupère l’adresse de retour du frame. |
IDiaStackFrame::get_size | Récupère la taille de l’image en octets. |
IDiaStackFrame::get_systemExceptionHandling | Récupère un indicateur spécifiant que la gestion des exceptions système est en vigueur. |
IDiaStackFrame::get_type | Récupère le type d’image. |
Remarques
Une frame de pile est une abstraction d’un appel de fonction pendant son exécution.
Remarques pour les appelants
Obtenez cette interface en appelant la méthode IDiaEnumStackFrames::Next. Consultez l’interface IDiaEnumStackFrames pour découvrir comment obtenir l’interface IDiaStackFrame
.
Exemple
Cet exemple montre comment afficher différents attributs d’un frame de pile.
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);
}
}
}
Configuration requise
En-tête : Dia2.h
Bibliothèque : diaguids.lib
DLL : msdia80.dll