jinterop call fail [0x80070057]

0

when i run the code below:

JICallBuilder callObject = new JICallBuilder ( true );
callObject.setOpnum ( 1 );

callObject.addInParamAsShort((short)direction.id (), JIFlags.FLAG_NULL);
callObject.addInParamAsString ( position, JIFlags.FLAG_REPRESENTATION_STRING_LPWSTR);

getCOMObject ().call ( callObject );

return exception

16:05:13.348 [OPCSessionDestructor] DEBUG org.openscada.opc.lib.da.Server - Starting destruction of DCOM session
    at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:999)
    at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:945)
    at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:271)
    at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:156)
    at org.openscada.opc.dcom.da.impl.OPCBrowseServerAddressSpace.changePosition(OPCBrowseServerAddressSpace.java:83)
    at org.openscada.opc.lib.da.browser.TreeBrowser.moveToBranch(TreeBrowser.java:94)
    at org.openscada.opc.lib.da.browser.TreeBrowser.fill(TreeBrowser.java:176)
    at com.lakert.opc.OpcClient.connectServer(OpcClient.java:82)
    at com.lakert.opc.OpcListener.start(OpcListener.java:21)
    at com.lakert.opc.OpcListener.main(OpcListener.java:26)
Caused by: org.jinterop.dcom.common.JIRuntimeException: The parameter is incorrect. [0x80070057]

and then i find the interface use oleviewer

HRESULT _stdcall ChangeBrowsePosition(
                [in] tagOPCBROWSEDIRECTION dwBrowseDirection, 
                [in] LPWSTR szString);

typedef enum {
    OPC_BROWSE_UP = 1,
    OPC_BROWSE_DOWN = 2,
    OPC_BROWSE_TO = 3
} tagOPCBROWSEDIRECTION;

the first param is enum type, but i cann't find the enum type in jinterop, so how to solve this problem? thx!

enums
dcom
j-interop
asked on Stack Overflow Oct 14, 2019 by xwei_chen

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0