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