IDiaStackFrame
Macht die Eigenschaften eines Stapelrahmens verfügbar.
Syntax
IDiaStackFrame : IUnknown
Methoden in Vtable-Reihenfolge
Die folgenden Methoden werden von dieser Schnittstelle unterstützt:
Methode | BESCHREIBUNG |
---|---|
IDiaStackFrame::get_allocatesBasePointer | Ruft ein Flag ab, das angibt, dass der Basiszeiger Code in diesem Adressbereich zugeordnet ist. Diese Methode ist als veraltet markiert. |
IDiaStackFrame::get_base | Ruft die Adressbasis des Rahmens ab. |
IDiaStackFrame::get_cplusplusExceptionHandling | Ruft ein Flag ab, das angibt, dass die C++-Ausnahmebehandlung aktiv ist. |
IDiaStackFrame::get_functionStart | Ruft ein Flag ab, das angibt, dass der Block den Einstiegspunkt einer Funktion enthält. |
IDiaStackFrame::get_lengthLocals | Ruft die Anzahl der Bytes der lokalen Variablen ab, die in den Stapel gepusht werden. |
IDiaStackFrame::get_lengthParams | Ruft die Anzahl der Bytes der Parameter ab, die in den Stapel gepusht werden. |
IDiaStackFrame::get_lengthProlog | Ruft die Anzahl von Bytes des Prologcodes im Block ab |
IDiaStackFrame::get_lengthSavedRegisters | Ruft die Anzahl der Bytes der gespeicherten Register ab, die in den Stapel gepusht werden. |
IDiaStackFrame::get_localsBase | Ruft die Adressbasis der lokalen Variablen ab. |
IDiaStackFrame::get_maxStack | Ruft die maximale Anzahl von Bytes ab, die in den Stapel im Rahmen gepusht werden. |
IDiaStackFrame::get_rawLVarInstanceValue | Ruft den Wert der angegebenen lokalen Variable als unformatierte Bytes ab. |
IDiaStackFrame::get_registerValue | Ruft den Wert des angegebenen Registers ab. |
IDiaStackFrame::get_returnAddress | Ruft die Rückgabeadresse des Rahmens ab. |
IDiaStackFrame::get_size | Ruft die Größe des Rahmens in Byte ab. |
IDiaStackFrame::get_systemExceptionHandling | Ruft ein Flag ab, das angibt, dass die Systemausnahmebehandlung aktiv ist. |
IDiaStackFrame::get_type | Ruft den Rahmentyp ab. |
Hinweise
Ein Stapelrahmen ist eine Abstraktion eines Funktionsaufrufs während seiner Ausführung.
Hinweise für Aufrufer
Sie rufen diese Schnittstelle ab, indem Sie die IDiaEnumStackFrames::Next-Methode aufrufen. Ein Beispiel zum Abrufen der IDiaStackFrame
-Schnittstelle finden Sie unter der IDiaEnumStackFrames-Schnittstelle.
Beispiel
In diesem Beispiel werden verschiedene Attribute eines Stapelrahmens angezeigt.
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);
}
}
}
Requirements (Anforderungen)
Header: Dia2.h
Bibliothek: diaguids.lib
DLL: msdia80.dll