IDiaStackFrame
Macht die Eigenschaften eines Stapelrahmens.
IDiaStackFrame : IUnknown
Methoden in die Vtable-Reihenfolge
Im Folgenden sind die Methoden, die von dieser Schnittstelle unterstützt werden:
Methode |
Beschreibung |
---|---|
Ruft ein Flag ab, das angibt, dass der Zeiger für den Code in diesem Adressbereich zugeordnet ist.Diese Methode ist veraltet. |
|
Ruft die Adressen Seite des Rahmens ab. |
|
Ruft ein Flag ab, das angibt, dass die C++-Ausnahmebehandlung aktiviert. |
|
Ruft ein Flag ab, das angibt, dass der Block den Einstiegspunkt einer Funktion enthält. |
|
Ruft die Anzahl von Bytes lokalen Variablen ab, die auf dem Stapel abgelegt werden. |
|
Ruft die Anzahl von Bytes Parametern ab, die auf dem Stapel abgelegt werden. |
|
Ruft die Anzahl von Bytes des vorläufige Codes im Block ab |
|
Ruft die Anzahl von Bytes ab, die gespeicherte Register auf dem Stapel abgelegt werden. |
|
Ruft die Adressen der Seite lokalen Variablen ab. |
|
Ruft die maximale Anzahl von Bytes ab, die in den Frames auf dem Stapel abgelegt werden. |
|
Ruft den Wert der angegebenen lokalen Variable als unformatierte Bytes ab. |
|
Ruft den Wert eines angegebenen Registers ab. |
|
Ruft die Rückgabeadresse des Rahmens ab. |
|
Ruft die Größe des Rahmens in Bytes ab. |
|
Ruft ein Flag ab, das angibt, dass diese System ausnahmebehandlung wirksam. |
|
Ruft den Typ des Rahmens ab. |
Hinweise
Ein Stapelrahmen ist eine Abstraktion eines Funktionsaufrufs während ihrer Ausführung.
Hinweise für Aufrufer
Rufen Sie diese Schnittstelle, indem sie die IDiaEnumStackFrames::Next-Methode aufruft.Zeigen Sie die IDiaEnumStackFrames-Schnittstelle als Beispiel auf Abrufen der IDiaStackFrame-Schnittstelle.
Beispiel
In diesem Beispiel werden verschiedene Attribute eines Stapelrahmens.
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);
}
}
}
Anforderungen
Header: Dia2.h
Bibliothek: diaguids.lib
DLLs: msdia80.dll