我正在尝试通过 com4j 库从 java 调用一些 COM 方法。在我可以访问的文档中,COM 方法的签名是:
HRESULT method1 ([in] VARIANT (SafeArray UI1) vInBuf,
[out] VARIANT (SafeArray UI1) *pvOutBuf,
[out, retval] long *plResult)
我想将一个字节数组传递给该方法并从中获取一个字节数组。Com4J 生成的界面显示为:
@DISPID(2)
@VTID(8)
int method1 (
@MarshalAs(NativeType.VARIANT) java.lang.Object vSendData,
java.lang.Object pvReceiveData);
但是我不知道以什么格式发送它们。
byte[] req = new byte[]{1,2,3,4};
byte[] res = new byte[512];
method1(req,res);
似乎不起作用。也没有将它们声明为对象或诸如此类的东西。我查看了 com4j.SafeArray ( http://com4j.kohsuke.org/apidocs/com4j/SafeArray.html ),但我不太明白应该如何将数组放入其中。
有没有其他人曾经使用过 com4j 库并弄清楚如何发送/接收字节数组?