如何以最佳方式将字节数组从 C# 获取到C++ WinRT 组件
本文关键字:获取 C++ 组件 WinRT 数组 字节数 最佳 方式 字节 | 更新日期: 2023-09-27 18:36:38
我们有一个 WinRT 组件,该组件具有在内部处理C++ unsigned char
缓冲区的业务逻辑。我们现在想要从 C# byte[]
提供该缓冲区。完美边界会是什么样子,即下面SomeWinRTFunction
函数的签名是什么?
void SomeWinRTFunction(something containing bytes from managed land)
{
IVector<unsigned char> something using the bytes given from managed land;
}
这种问题对于搜索引擎来说似乎太新了,找不到它......
在C++部分中,该方法应接受 uint8 的平台数组(相当于 C# 字节)。
public ref class Class1 sealed
{
public:
Class1();
//readonly array
void TestArray(const Platform::Array<uint8>^ intArray)
{
}
//writeonly array
void TestOutArray(Platform::WriteOnlyArray<uint8>^ intOutArray)
{
}
};
在 C# 部分中传递字节数组:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Byte[] b = new Byte[2];
b[0] = 1;
var c = new Class1();
c.TestArray(b);
c.TestOutArray(b);
}
在 WinRT IVector 中被投影为 IList,我不确定字节 ->无符号字符,但我怀疑也是。
C#
byte[] array;
SomeWinRTFunction(array);
C++
void SomeWinRTFunction(IVector<unsigned char> bytes)
{
IVector<unsigned char> something using the bytes given from managed land;
}
本白皮书可能会提供更多的启示。