我正在努力连接两个API。从一个我得到一个Windows::Storage::IBuffer
,另一个我得到一个ComPtr<IStream>.
,即使我想复制流中的数据,我似乎也没有找到桥接这两个方法的方法。
到目前为止,从IBuffer前进的唯一方法是创建一个Windows::Storage::Streams::DataReader::FromBuffer(buffer).
从那里,我可以ReadBytes
获取Platform::Array<unsigned char>
数组,但是那又是什么呢?
谢谢!
最佳答案
可能还有其他方法可以为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
}
关于c++ - 从IBuffer获取ComPtr <IStream>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33148778/