Freigeben über


IDiaFrameData

Macht die Details eines Stapelrahmens.

IDiaFrameData : IUnknown

Methoden in die Vtable-Reihenfolge

In der folgenden Tabelle werden die Methoden von IDiaFrameDataan.

Methode

Beschreibung

IDiaFrameData::get_addressSection

Ruft den Teil der Code-Adresse Abschnitts für den Rahmen ab.

IDiaFrameData::get_addressOffset

Ruft den Offset Teil der Code-Adresse für den Zielframe ab.

IDiaFrameData::get_relativeVirtualAddress

Ruft die relative virtuelle Adresse des Bildes (RVA) des Codes für den Zielframe ab.

IDiaFrameData::get_virtualAddress

Ruft die virtuelle Adresse (VA) des Codes für den Zielframe ab.

IDiaFrameData::get_lengthBlock

Ruft die Länge in Bytes des Codeblocks ab, der durch den Frame beschrieben wird.

IDiaFrameData::get_lengthLocals

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

IDiaFrameData::get_lengthParams

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

IDiaFrameData::get_maxStack

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

IDiaFrameData::get_lengthProlog

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

IDiaFrameData::get_lengthSavedRegisters

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

IDiaFrameData::get_program

Ruft das Programm Zeichenfolge ab, die verwendet wird, um den Registern Gruppe vor dem Aufruf der aktuellen Funktion abzuleiten.

IDiaFrameData::get_systemExceptionHandling

Ruft ein Flag ab, das diese System aktiv ist ausnahmebehandlung angibt.

IDiaFrameData::get_cplusplusExceptionHandling

Ruft ein Flag ab, das dieses C++-Ausnahmebehandlung ist wirksam angibt.

IDiaFrameData::get_functionStart

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

IDiaFrameData::get_allocatesBasePointer

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

IDiaFrameData::get_type

Ruft den Typ des Rahmens compilerspezifisch ab.

IDiaFrameData::get_functionParent

Ruft einen Rahmen bezugspunkt Oberfläche für das Einschließen der Funktion ab.

IDiaFrameData::execute

Führt Stapelentladung aus und gibt den aktuellen Zustand von Registern in einer Stackwalk Skinframes Oberfläche zurück.

Hinweise

Die Details, die für Frames verfügbar sind, sind für zeigt bei der Ausführung innerhalb des Adressbereichs, der durch die Adresse und die Länge des Blocks angegeben wird.

Hinweise für Aufrufer

Rufen Sie diese Schnittstelle, indem sie die IDiaEnumFrameData::Next oder IDiaEnumFrameData::Item-Methoden aufgerufen werden.Zeigen Sie die IDiaEnumFrameData-Schnittstelle.

Beispiel

In diesem Beispiel werden die Eigenschaften eines IDiaFrameData-Objekts aus.Zeigen Sie die IDiaEnumFrameData-Schnittstelle als ein Beispiel dafür, wie die IDiaFrameData-Schnittstelle ermittelt wird.

void PrintFrameData(IDiaFrameData* pFrameData){
    DWORD dwSect;
    DWORD dwOffset;
    DWORD cbBlock;
    DWORD cbLocals; // Number of bytes reserved for the function locals
    DWORD cbParams; // Number of bytes reserved for the function arguments
    DWORD cbMaxStack;
    DWORD cbProlog;
    DWORD cbSavedRegs;
    BOOL  bSEH;
    BOOL  bEH;
    BOOL  bStart;
    BSTR  wszProgram;

    if(pFrameData->get_addressSection(&dwSect) == S_OK && 
       pFrameData->get_addressOffset(&dwOffset) == S_OK &&
       pFrameData->get_lengthBlock(&cbBlock) == S_OK &&
       pFrameData->get_lengthLocals(&cbLocals) == S_OK &&
       pFrameData->get_lengthParams(&cbParams) == S_OK &&
       pFrameData->get_maxStack(&cbMaxStack) == S_OK &&
       pFrameData->get_lengthProlog(&cbProlog) == S_OK &&
       pFrameData->get_lengthSavedRegisters(&cbSavedRegs) == S_OK &&
       pFrameData->get_systemExceptionHandling(&bSEH) == S_OK &&
       pFrameData->get_cplusplusExceptionHandling(&bEH) == S_OK &&
       pFrameData->get_functionStart(&bStart) == S_OK )
    {
        wprintf(L"Frame address  : %04X:%08X\n", dwSect, dwOffset);
        wprintf(L"Block size     : 0x%8X\n", cbBlock);
        wprintf(L"Locals size    : 0x%8X\n", cbLocals);
        wprintf(L"Parms size     : 0x%8X\n", cbParams);
        wprintf(L"Max stack used : 0x%8X\n", cbMaxStack);
        wprintf(L"Prolog size    : 0x%8X\n", cbProlog);
        wprintf(L"Saved regs size: 0x%8X\n", cbSavedRegs);
        wprintf(L"System Exception Handling: %c\n", bSEH ? L'Y' : L'N');
        wprintf(L"C++ Exception Handling   : %c\n", bEH ? L'Y' : L'N');
        wprintf(L"Function starts in block : %c\n", bStart ? L'Y' : L'N');

        if (pFrameData->get_program(&wszProgram) == S_OK)
        {
            wprintf(L"Program used for register set: %s\n", wszProgram);
            SysFreeString(wszProgram);
        }
        else
        {
            wprintf(L"\n");
        }
    }
}

Anforderungen

Header: Dia2.h

Bibliothek: diaguids.lib

DLLs: msdia80.dll

Siehe auch

Referenz

IDiaEnumFrameData

IDiaEnumFrameData::Item

IDiaEnumFrameData::Next

Weitere Ressourcen

Schnittstellen (Debug Interface Access SDK)