Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
espone i dettagli di uno stack frame.
IDiaFrameData : IUnknown
Metodi nell'ordine di Vtable
Nella tabella seguente sono elencati i metodi di IDiaFrameData.
Metodo |
Descrizione |
|---|---|
Recupera la parte della sezione del codice dell'indicizzazione del frame. |
|
Recupera la parte dell'offset del codice dell'indicizzazione del frame. |
|
Recupera indirizzo (RVA) virtuale di immagine del codice per il frame. |
|
Recupera indirizzo (VA) virtuale del codice per il frame. |
|
Recupera la lunghezza, in byte, del blocco di codice descritto dal frame. |
|
Recupera il numero di byte delle variabili locali inserite nello stack. |
|
Recupera il numero di byte dei parametri spinti nello stack. |
|
Recupera il numero massimo di byte spinti nello stack nel frame. |
|
Recupera il numero di byte del codice di prologo nel blocco. |
|
Recupera il numero di byte dei registri salvati spinti nello stack. |
|
Recuperare la stringa del programma utilizzata per calcolare il set di log prima della chiamata alla funzione corrente. |
|
Recupera un flag che indica che la gestione delle eccezioni del sistema è attiva. |
|
Recupera un flag che indica che la gestione delle eccezioni C++ è attiva. |
|
recupera un flag che indica che il blocco contiene il punto di ingresso di una funzione. |
|
recupera un flag che indica che il puntatore di base è allocato per il codice in questo intervallo di indirizzi.Il metodo è deprecato. |
|
recupera il tipo di frame compilatore-specifico. |
|
Recupera l'interfaccia di dati del frame per viene racchiuso della funzione. |
|
Esegue la rimozione dello stack e restituisce lo stato corrente di log in un'interfaccia del frame dello stack. |
Note
Informazioni dettagliate disponibili per un frame sono per i punti di esecuzione nell'intervallo di indirizzi indicato da e dalla durata di blocco.
Note per i chiamanti
Leggi questa interfaccia chiamando IDiaEnumFrameData::Next o IDiaEnumFrameData::Item metodi.vedere IDiaEnumFrameData interfaccia per i dettagli.
Esempio
L'esempio visualizza le proprietà di IDiaFrameData oggetto.vedere IDiaEnumFrameData interfaccia per un esempio di come IDiaFrameData l'interfaccia viene ottenuta.
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");
}
}
}
Requisiti
intestazione: Dia2.h
raccolta: diaguids.lib
DLL: msdia80.dll