IDiaEnumDebugStreamData

Provides access to the records in a debug data stream.

Syntax

IDiaEnumDebugStreamData : IUnknown

Methods in Vtable Order

The following table shows the methods of IDiaEnumDebugStreamData.

Method Description
IDiaEnumDebugStreamData::get__NewEnum Retrieves the IEnumVARIANT Interface version of this enumerator.
IDiaEnumDebugStreamData::get_Count Retrieves the number of records in the debug data stream.
IDiaEnumDebugStreamData::get_name Retrieves the name of the debug data stream.
IDiaEnumDebugStreamData::Item Retrieves the specified record.
IDiaEnumDebugStreamData::Next Retrieves the specified number of records from the enumerated sequence.
IDiaEnumDebugStreamData::Skip Skips a specified number of records in an enumerated sequence.
IDiaEnumDebugStreamData::Reset Resets the enumerated sequence to the beginning.
IDiaEnumDebugStreamData::Clone Creates an enumerator that contains the same enumerated sequence as the current enumerator.

Remarks

This interface represents a stream of records in a debug data stream. The size and interpretation of each record is dependent on the data stream the record comes from. This interface effectively provides access to the raw data bytes in the symbol file.

Notes for Callers

Call the IDiaEnumDebugStreams::Item or IDiaEnumDebugStreams::Next methods to obtain an IDiaEnumDebugStreamData object.

Example

This example shows how to access a single data stream and its records.

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);
}

Requirements

Header: Dia2.h

Library: diaguids.lib

DLL: msdia80.dll

See also