如前所述,WindowsRuntimeBufferExtensions
命名空间System::Runtime::InteropServices::WindowsRuntime
仅适用于 .Net 应用程序,不适用于本机 C++ 应用程序。
一个可能的解决方案是使用Windows::Storage::Streams::DataReader
:
void process(Windows::Storage::Streams::IBuffer^ uselessBuffer)
{
Windows::Storage::Streams::DataReader^ uselessReader =
Windows::Storage::Streams::DataReader::FromBuffer(uselessBuffer);
Platform::Array<Byte>^ managedBytes =
ref new Platform::Array<Byte>(uselessBuffer->Length);
uselessReader->ReadBytes( managedBytes );
BYTE * bytes = new BYTE[uselessBuffer->Length];
for(int i = 0; i < uselessBuffer->Length; i++)
bytes[i] = managedBytes[i];
(...)
}