我在C#中有一个包含xml数据的Memory流对象。
fileEntity = new FileEntity();
fileEntity.Bytes = new byte[stream[0].Length];
fileEntity.FileName = ConfigurationManager.AppSettings["BackupPath"].ToString() + "\\" + backupEntity.BackupFileName;
stream.Position = 0;
stream.Read(fileEntity.Bytes, 0, (int)stream[0].Length);
当我将fileEntity.Bytes
写入C#中的文件时,它会正确生成。
但是,我需要使用COM访问C ++中的字节并将字节写入文件。
pSABytes = fileentity->GetBytes();
bytes = (byte*)pSABytes;
LONG ub;
HRESULT res = SafeArrayGetUBound(pSABytes, 1, &ub);
FILE* file = fopen("c:\\Abc.xml", "w+");
fwrite( bytes, 1, ub, file );
fclose(file);
但是我在第fwrite(bytes,1,ub,file)
行
COM.exe中0x5f268962(msvcr100d.dll)的未处理异常:0xC0000005:访问冲突读取位置0x000000001cf1d000。
答案 0 :(得分:1)
bytes = (byte*)pSABytes
对于您要执行的操作不合法。您需要致电SafeArrayAccessData(pSABytes, &bytes)