【发布时间】:2014-07-13 15:01:22
【问题描述】:
我被困在我正在编写的一个程序上,并认为在这里提问不会有什么坏处。该程序是在 C# 中的。我正在使用一个让我有点困惑的命令。在 C# 中,命令是:
scanner.DirectIO(int x, int y, object z);
但是当我查看该命令的文档时,它是:
scanner.DirectIO(long x, long* y, BSTR* z); //z needs to have (some number) of bytes allocated
我遇到的问题是 C# 没有 BSTR* 等价物。此代码应该将位图的 bstr 放入 z 中。我现在不太担心 x 或 y。我尝试将所需大小的 byte[] 传递给它,但这不起作用。我正在考虑使用类似的东西:
IntPtr z = SysAllocStringByteLen(null, size);
但我不确定这是否是我想要的。有什么建议吗?谢谢!
编辑:我发现了一个类似的问题,但它没有告诉我如何通过 BSTR*,只是一个 BSTR:Convention for passing BSTRs into COM functions from C# (COM interop)
编辑: DirectIO 是 microsoft.pointofservice 中 Scanner 类的一种方法。 BSTR 的第二个声明来自特定扫描仪的文档。
【问题讨论】:
-
嗯,这并不接近正确。它看起来像一个 COM 方法,但它永远不会被严重破坏。您必须更明确地说明此声明是如何生成的。
-
我将对其进行编辑以反映这一点。