IDiaEnumDebugStreamData
提供对调试数据流中的记录的访问。
语法
IDiaEnumDebugStreamData : IUnknown
Vtable 顺序中的方法
下表显示了 IDiaEnumDebugStreamData
方法。
方法 | 说明 |
---|---|
IDiaEnumDebugStreamData::get__NewEnum | 检索此枚举器的 IEnumVARIANT Interface 版本。 |
IDiaEnumDebugStreamData::get_Count | 检索调试数据流中的记录数。 |
IDiaEnumDebugStreamData::get_name | 检索调试数据流的名称。 |
IDiaEnumDebugStreamData::Item | 检索指定的记录。 |
IDiaEnumDebugStreamData::Next | 检索枚举序列中指定数量的记录。 |
IDiaEnumDebugStreamData::Skip | 跳过枚举序列中指定数量的记录。 |
IDiaEnumDebugStreamData::Reset | 将枚举的序列重置到开头。 |
IDiaEnumDebugStreamData::Clone | 创建一个枚举器,其中包含与当前枚举器相同的枚举序列。 |
备注
此接口表示调试数据流中的一个记录流。 每条记录的大小和解释取决于记录来自的数据流。 此接口可以有效地提供对符号文件中的原始数据字节的访问。
对调用者的说明
调用 IDiaEnumDebugStreams::Item 或 IDiaEnumDebugStreams::Next 方法以获取 IDiaEnumDebugStreamData
对象。
示例
本示例展示了如何访问单个数据流及其记录。
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);
}
要求
标头:Dia2.h
库:diaguids.lib
DLL:msdia80.dll