在IB ++(WinRT)中从IBuffer转换为const unsigned char

时间:2015-04-09 12:50:13

标签: c# c++ windows-runtime clr

我想从C#转换为C ++并再次将缓冲区返回给C# 如何将IBuffer转换为" const unsigned char * data"再次给IBuffer

Windows::Storage::Streams::IBuffer^ Decode(Windows::Storage::Streams::IBuffer^ buff, int len, int frame_size, int decode_fec);

Windows::Storage::Streams::IBuffer^ MyApi::Decode(Windows::Storage::Streams::IBuffer^ buff, int len, int frame_size, int decode_fec)
{

}

1 个答案:

答案 0 :(得分:3)

您可以通过查询IBufferByteAccess接口然后访问IBufferByteAccess :: Buffer来获取IBuffer的内容,以便将其内容作为字节*

IUnknown* pUnk = reinterpret_cast<IUnknown*>(buff);
IBufferByteAccess* pBufferByteAccess = nullptr;
HRESULT hr = pUnk->QueryInterface(IID_PPV_ARGS(pBufferByteAccess);
byte *pbytes = nullptr;
hr = pBufferByteAccess->Buffer(&pbytes);