Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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