0

一部のデータをchar配列として受け取ります。このデータをストリームを受信するメソッド(IUnknown * pInput)に渡したいです。

私はこのコードを(ビジュアルC ++を使用して)デバッグしようとしました:


#include "xmllite.h"
#include <atlbase.h>

CHAR acTemp [100] = {0};
CComPtr<IStream> pDataStream;
HRESULT hr;

hr = IStream_Write (pDataStream, acTemp, sizeof (acTemp));

エラーが発生します:

SSL.exeの0x75e49875での未処理の例外:0xC0000005:アクセス違反の読み取り場所0x00000000。

ファイルからstremを作成する次のコードが機能することはわかっていますが、元の配列から変換できないという理由だけでファイルを作成したくありませんでした。

CComPtr<IStream> pFileStream;
LPCSTR szFileName = "FileName";
HRESULT hr;

hr = SHCreateStreamOnFile(szFileName, STGM_READ, &pFileStream);
4

2 に答える 2

3

あなたができる

CComPtr<IStream> stream;
COM_VERIFY(::CreateStreamOnHGlobal(0, TRUE, &stream));

GlobalAllocを使用して、使用する「独自の」メモリを指定することもできます。(ドイツ語が上手な場合は、http://msdn.microsoft.com/de-de/magazine/cc163436.aspx#S5を参照してください)。

于 2012-04-23T19:21:38.663 に答える
0

質問に具体的に答えるために、スニペットは次のとおりです。

CHAR *acTemp;
acTemp = (CHAR *) GlobalAlloc (GMEM_FIXED, dwBytes);
memcpy (acTemp, acXml, dwBytes);
hr = ::CreateStreamOnHGlobal(acTemp, TRUE, &pDataStream);

この場合、acXmlは、ストリームに入れるデータを含むchar配列です。

以前がうまくいかなかった理由はわかりませんでしたが、これは今のところうまくいきました。助けてくれてありがとう@Matthias!

于 2012-04-24T11:37:44.400 に答える