IDiaFrameData
Macht die Details eines Stapelrahmens.
IDiaFrameData : IUnknown
Methoden in die Vtable-Reihenfolge
In der folgenden Tabelle werden die Methoden von IDiaFrameDataan.
Methode |
Beschreibung |
---|---|
Ruft den Teil der Code-Adresse Abschnitts für den Rahmen ab. |
|
Ruft den Offset Teil der Code-Adresse für den Zielframe ab. |
|
Ruft die relative virtuelle Adresse des Bildes (RVA) des Codes für den Zielframe ab. |
|
Ruft die virtuelle Adresse (VA) des Codes für den Zielframe ab. |
|
Ruft die Länge in Bytes des Codeblocks ab, der durch den Frame beschrieben wird. |
|
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 maximale Anzahl von Bytes ab, die in den Frames 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 das Programm Zeichenfolge ab, die verwendet wird, um den Registern Gruppe vor dem Aufruf der aktuellen Funktion abzuleiten. |
|
Ruft ein Flag ab, das diese System aktiv ist ausnahmebehandlung angibt. |
|
Ruft ein Flag ab, das dieses C++-Ausnahmebehandlung ist wirksam angibt. |
|
Ruft ein Flag ab, das angibt, dass der Block den Einstiegspunkt einer Funktion enthält. |
|
Ruft ein Flag ab, das angibt, dass der Zeiger für den Code in diesem Adressbereich zugeordnet ist.Diese Methode ist veraltet. |
|
Ruft den Typ des Rahmens compilerspezifisch ab. |
|
Ruft einen Rahmen bezugspunkt Oberfläche für das Einschließen der Funktion ab. |
|
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