Freigeben über


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

IDiaStackFrame::get_allocatesBasePointer

Ruft ein Flag ab, das angibt, dass der Zeiger für den Code in diesem Adressbereich zugeordnet ist.Diese Methode ist veraltet.

IDiaStackFrame::get_base

Ruft die Adressen Seite des Rahmens ab.

IDiaStackFrame::get_cplusplusExceptionHandling

Ruft ein Flag ab, das angibt, dass die C++-Ausnahmebehandlung aktiviert.

IDiaStackFrame::get_functionStart

Ruft ein Flag ab, das angibt, dass der Block den Einstiegspunkt einer Funktion enthält.

IDiaStackFrame::get_lengthLocals

Ruft die Anzahl von Bytes lokalen Variablen ab, die auf dem Stapel abgelegt werden.

IDiaStackFrame::get_lengthParams

Ruft die Anzahl von Bytes Parametern ab, die auf dem Stapel abgelegt werden.

IDiaStackFrame::get_lengthProlog

Ruft die Anzahl von Bytes des vorläufige Codes im Block ab

IDiaStackFrame::get_lengthSavedRegisters

Ruft die Anzahl von Bytes ab, die gespeicherte Register auf dem Stapel abgelegt werden.

IDiaStackFrame::get_localsBase

Ruft die Adressen der Seite lokalen Variablen ab.

IDiaStackFrame::get_maxStack

Ruft die maximale Anzahl von Bytes ab, die in den Frames auf dem Stapel abgelegt werden.

IDiaStackFrame::get_rawLVarInstanceValue

Ruft den Wert der angegebenen lokalen Variable als unformatierte Bytes ab.

IDiaStackFrame::get_registerValue

Ruft den Wert eines angegebenen Registers ab.

IDiaStackFrame::get_returnAddress

Ruft die Rückgabeadresse des Rahmens ab.

IDiaStackFrame::get_size

Ruft die Größe des Rahmens in Bytes ab.

IDiaStackFrame::get_systemExceptionHandling

Ruft ein Flag ab, das angibt, dass diese System ausnahmebehandlung wirksam.

IDiaStackFrame::get_type

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

Siehe auch

Referenz

IDiaEnumStackFrames

IDiaEnumStackFrames::Next

IDiaStackWalkFrame

Weitere Ressourcen

Schnittstellen (Debug Interface Access SDK)