IDiaFrameData

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

IDiaFrameData::get_addressSection

Recupera la parte della sezione del codice dell'indicizzazione del frame.

IDiaFrameData::get_addressOffset

Recupera la parte dell'offset del codice dell'indicizzazione del frame.

IDiaFrameData::get_relativeVirtualAddress

Recupera indirizzo (RVA) virtuale di immagine del codice per il frame.

IDiaFrameData::get_virtualAddress

Recupera indirizzo (VA) virtuale del codice per il frame.

IDiaFrameData::get_lengthBlock

Recupera la lunghezza, in byte, del blocco di codice descritto dal frame.

IDiaFrameData::get_lengthLocals

Recupera il numero di byte delle variabili locali inserite nello stack.

IDiaFrameData::get_lengthParams

Recupera il numero di byte dei parametri spinti nello stack.

IDiaFrameData::get_maxStack

Recupera il numero massimo di byte spinti nello stack nel frame.

IDiaFrameData::get_lengthProlog

Recupera il numero di byte del codice di prologo nel blocco.

IDiaFrameData::get_lengthSavedRegisters

Recupera il numero di byte dei registri salvati spinti nello stack.

IDiaFrameData::get_program

Recuperare la stringa del programma utilizzata per calcolare il set di log prima della chiamata alla funzione corrente.

IDiaFrameData::get_systemExceptionHandling

Recupera un flag che indica che la gestione delle eccezioni del sistema è attiva.

IDiaFrameData::get_cplusplusExceptionHandling

Recupera un flag che indica che la gestione delle eccezioni C++ è attiva.

IDiaFrameData::get_functionStart

recupera un flag che indica che il blocco contiene il punto di ingresso di una funzione.

IDiaFrameData::get_allocatesBasePointer

recupera un flag che indica che il puntatore di base è allocato per il codice in questo intervallo di indirizzi.Il metodo è deprecato.

IDiaFrameData::get_type

recupera il tipo di frame compilatore-specifico.

IDiaFrameData::get_functionParent

Recupera l'interfaccia di dati del frame per viene racchiuso della funzione.

IDiaFrameData::execute

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

Vedere anche

Riferimenti

IDiaEnumFrameData

IDiaEnumFrameData::Item

IDiaEnumFrameData::Next

Altre risorse

Interfacce (Debug Interface Access SDK)