具有String参数的Java调用DLL函数导致访问冲突

时间:2013-08-13 18:11:55

标签: java dll

我必须与PinPad设备集成。

PinPad的DLL有一个在Param中接收String的方法。以下代码与真实代码类似。

这是de JavaCode:

  Memory memMsgAfter = new Memory(32);
  memMsgAfter.setString(0, toHexString("0000000000000000".getBytes()));
  PinpadGertecInterface.instance.PPC_StartPINEntry_DiffWK(0, 1, 3, memMsgAfter,/* other params ommited*/)

这是C中方法的分配:

PPC_FUNCTION PPC_StartPINEntry (BYTE bMode, BYTE bIndex, BYTE bKey-
Opt, BYTE *sEncWK, /* other params */);

制造商的文件说:

bKeyOpt BYTE [IN]:
    键控选项。查看正确使用的备注。

sEncWK BYTE * [IN]

加密的工作密钥。长度是可靠的 在bKeyOpt上(总是HEX字符串)。 bKeyOpt = 1 => sEncWK长度必须为48。 bKeyOpt = 2 => sEncWK长度必须为32。 bKeyOpt = 3 => sEncWK长度必须为16。

问题是它执行并返回ACCESS VIOLATION

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0114c48e, pid=5284, tid=4856

0 个答案:

没有答案