IDiaEnumDebugStreamData
デバッグ データ ストリーム内のレコードへのアクセスを提供します。
構文
IDiaEnumDebugStreamData : IUnknown
Vtable 順序のメソッド
次の表に、IDiaEnumDebugStreamData
のメソッドを示します。
メソッド | 説明 |
---|---|
IDiaEnumDebugStreamData::get__NewEnum | この列挙子の IEnumVARIANT インターフェイス バージョンを取得します。 |
IDiaEnumDebugStreamData::get_Count | デバッグ データ ストリーム内のレコードの数を取得します。 |
IDiaEnumDebugStreamData::get_name | デバッグ データ ストリームの名前を取得します。 |
IDiaEnumDebugStreamData::Item | 指定されたレコードを取得します。 |
IDiaEnumDebugStreamData::Next | 列挙シーケンスから指定された数のレコードを取得します。 |
IDiaEnumDebugStreamData::Skip | 列挙シーケンス内の指定された数のレコードをスキップします。 |
IDiaEnumDebugStreamData::Reset | 列挙シーケンスを先頭にリセットします。 |
IDiaEnumDebugStreamData::Clone | 現在の列挙子と同じ列挙シーケンスを含む列挙子を作成します。 |
解説
このインターフェイスは、デバッグ データ ストリーム内のレコードのストリームを表します。 各レコードのサイズと解釈は、レコードの取得元のデータ ストリームによって異なります。 このインターフェイスを使用すると、シンボル ファイル内の生データ バイトに効果的にアクセスできます。
呼び出し元に関する注意事項
IDiaEnumDebugStreamData
オブジェクトを取得するには、IDiaEnumDebugStreams::Item または IDiaEnumDebugStreams::Next メソッドを呼び出します。
例
この例は、単一のデータ ストリームとそのレコードにアクセスする方法を示しています。
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