我正在努力连接两个API。从一个我得到Windows::Storage::IBuffer
,另一个要求ComPtr<IStream>.
我似乎没有办法桥接这两个,即使我想在流中复制数据。< / p>
到目前为止,从IBuffer前进的唯一方法是创建一个Windows::Storage::Streams::DataReader::FromBuffer(buffer).
从那里开始,我可以ReadBytes
获取Platform::Array<unsigned char>
数组,但接着是什么?
谢谢!
答案 0 :(得分:0)
可能有其他方法可以为IBuffer获取COM兼容的IStream
接口,但如果您有数据字节,则可以使用CreateStreamOnHGlobal
API在内存上创建COM IStream,然后将字节复制到新的IStream。在交出之前不要忘记重置搜索指针。
[DllImport("ole32.dll")]
private static extern int CreateStreamOnHGlobal(IntPtr hGlobal, bool fDeleteOnRelease, out IStream ppstm);
System.Runtime.InteropServices.ComTypes stm;
if (CreateStreamOnHGlobal(IntPtr.Zero, true, out stm) == 0)
{
stm.Write( ...data for the stream... );
stm.Seek(0, 0, IntPtr.Zero); // seek to start of stream
}