IDiaDataSource::getStreamRawData
擷取具名數據流的原始位元組。
語法
HRESULT getStreamRawData (
LPCOLESTR stream,
ULONGLONG cbOffset,
ULONGLONG cbRead,
ULONGLONG* pcbRead,
BYTE* pbData
);
參數
stream
[in]偵錯資訊內的數據流名稱。
cbOffset
[in]要開始讀取數據之數據流內的位移。
cbRead
[in]要擷取的位元元組數目。
pcbRead
[out]實際從數據流讀取的位元組數目。
pbData
[out]儲存讀取數據的位置。 在輸入上,大小至少 cbRead
必須是位元組。 成功傳回 *pcbRead
的位元組將會有效。
傳回值
如果成功,則傳回 S_OK
。 如果命名數據流不存在於 PDB 內,API 可能會失敗,或可能會傳回長度為 0。
備註
程序資料庫是由多個數據流所組成。 其中有些數據流會命名。 您可以使用這個方法來收集這些具名數據流的相關信息。
若要取得數據流的大小,請使用 IDiaDataSourceEx::getStreamSize
方法。
範例
ULONGLONG countBytes = 0;
LPCOLESTR stream = L"/names";
HRESULT hr = pSource->getStreamSize( stream, &countBytes );
if (SUCCEEDED(hr)) {
for (ULONGLONG cbOffset = 0, cbRead = 0; cbOffset < countBytes; cbOffset += cbRead) {
BYTE buffer[100];
cbRead = 0;
hr = pSource->getStreamRawBytes( stream, cbOffset, std::min(countBytes - cbOffset, sizeof(buffer)), &cbRead, buffer);
if (SUCCEEDED(hr)) {
...