IDiaDataSource::getStreamRawData
名前付きストリームの生バイトを取得します。
構文
HRESULT getStreamRawData (
LPCOLESTR stream,
ULONGLONG cbOffset,
ULONGLONG cbRead,
ULONGLONG* pcbRead,
BYTE* pbData
);
パラメーター
stream
[in]デバッグ情報内のストリームの名前。
cbOffset
[in]データの読み取りを開始するストリーム内のオフセット。
cbRead
[入力] 取得するバイト数。
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)) {
...