2

我正在尝试通过 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 库并弄清楚如何发送/接收字节数组?

4

0 回答 0