我必须与 PinPad 设备集成。
PinPad 的 DLL 有一个在 Param 中接收字符串的方法。以下代码与真实代码类似。
这是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 字节 * [输入]
加密的工作密钥。长度取决于 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