Condividi tramite


IDiaEnumDebugStreamData

Fornisce l'accesso ai record in un flusso di dati di debug.

Sintassi

IDiaEnumDebugStreamData : IUnknown

Metodi nell'ordine Vtable

Nella tabella seguente vengono illustrati i metodi di IDiaEnumDebugStreamData.

metodo Descrizione
IDiaEnumDebugStreamData::get__NewEnum Recupera la versione dell'interfaccia IEnumVARIANT di questo enumeratore.
IDiaEnumDebugStreamData::get_Count Recupera il numero di record nel flusso di dati di debug.
IDiaEnumDebugStreamData::get_name Recupera il nome del flusso di dati di debug.
IDiaEnumDebugStreamData::Item Recupera il record specificato.
IDiaEnumDebugStreamData::Next Recupera il numero specificato di record dalla sequenza enumerata.
IDiaEnumDebugStreamData::Skip Ignora un numero specificato di record in una sequenza enumerata.
IDiaEnumDebugStreamData::Reset Reimposta la sequenza enumerata all'inizio.
IDiaEnumDebugStreamData::Clone Crea un enumeratore che contiene la stessa sequenza enumerata dell'enumeratore corrente.

Osservazioni:

Questa interfaccia rappresenta un flusso di record in un flusso di dati di debug. Le dimensioni e l'interpretazione di ogni record dipendono dal flusso di dati da cui proviene il record. Questa interfaccia fornisce in modo efficace l'accesso ai byte di dati non elaborati nel file di simboli.

Note per i chiamanti

Chiamare i metodi IDiaEnumDebug Flussi::Item o IDiaEnumDebug Flussi::Next per ottenere un IDiaEnumDebugStreamData oggetto.

Esempio

In questo esempio viene illustrato come accedere a un singolo flusso di dati e ai relativi record.

void PrintStreamData(IDiaEnumDebugStreamData* pStream)
{
    BSTR  wszName;
    LONG  dwElem;
    ULONG celt    = 0;
    DWORD cbData;
    DWORD cbTotal = 0;
    BYTE  data[1024];

    if(pStream->get_name(&wszName) != S_OK)
    {
        wprintf_s(L"ERROR - PrintStreamData() get_name\n");
    }
    else
    {
        wprintf_s(L"Stream: %s", wszName);
        SysFreeString(wszName);
    }
    if(pStream->get_Count(&dwElem) != S_OK)
    {
        wprintf(L"ERROR - PrintStreamData() get_Count\n");
    }
    else
    {
        wprintf(L"(%d)\n", dwElem);
    }
    while(pStream->Next(1, sizeof(data), &cbData, (BYTE *)&data, &celt) == S_OK)
    {
        DWORD i;
        for (i = 0; i < cbData; i++)
        {
            wprintf(L"%02X ", data[i]);
            if(i && i % 8 == 7 && i+1 < cbData)
            {
                wprintf(L"- ");
            }
        }
        wprintf(L"| ");
        for(i = 0; i < cbData; i++)
        {
            wprintf(L"%c", iswprint(data[i]) ? data[i] : '.');
        }
        wprintf(L"\n");
        cbTotal += cbData;
    }
    wprintf(L"Summary :\n\tSizeof(Elem) = %d\n\tNo of Elems = %d\n\n",
            cbTotal/dwElem, dwElem);
}

Requisiti

Intestazione: Dia2.h

Libreria: diaguids.lib

DLL: msdia80.dll

Vedi anche