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)) {
      ...

请参阅