我试图通过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库并想出了如何发送/接收字节数组?