次の方法で共有


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

関連項目