Share via


IDiaEnumDebugStreamData

Provides access to the records in a debug data stream.

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

Reference

IDiaEnumDebugStreams::Item

IDiaEnumDebugStreams::Next

Other Resources

Interfaces (Debug Interface Access SDK)