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