找回密码
 加入
搜索
查看: 766|回复: 3

[系统综合] 这个dllcall 应该怎么写,求教

[复制链接]
发表于 2023-2-2 13:22:55 | 显示全部楼层 |阅读模式


  
函数名称
  
读基本信息
语法
long iReadCardBas(int iType, char* pOutInfo)
功能描述
选择社保卡社会保障系统环境后,通过PSAM卡对社保卡进行内部认证,通过后将卡内的基本信息读出返回。
参数说明
序号
参数
输入/输出
类型
长度(十进制)
含义
1
iType
IN
整数
4
操作卡的类型
2
pOutInfo
OUT
字符串
1024
读出数据或返回错误信息
返回值
0表示成功;非0表示失败。


(1)   输入参数iType
表示执行本函数时操作卡的类型,定义如下:1-接触式操作卡;2-非接触式操作卡;3-自动寻卡,接触式操作卡优先;4-自动寻卡,非接触式操作卡优先。
(2)   输出参数pOutInfo
当函数执行成功时,该输出参数为读出的社保卡基本信息各数据项




我看函数的解释是把读出的数据保存在第二个参数中,不理解怎么操作,而且字符指针应该怎么写。

local $info="1"
$result=DllCall("SSCardDriver.dll", "LONG", "iReadCardBas", "INT", 1, "WSTR", $info)


msgbox(0,1,$info)

以上写法没法得到正确的结果。
发表于 2023-2-2 13:35:04 | 显示全部楼层
$aRet = DllCall("SSCardDriver.dll", "int", "iReadCardBas", "int", 1, "str*","")
_arraydisplay($aRet)
发表于 2023-2-2 13:56:25 | 显示全部楼层
Local $v_Struct = DllStructCreate('char[1024]')
DllCall('SSCardDriver.dll', 'long', 'iReadCardBas', 'int', 1, 'char*', DllStructGetPtr($v_Struct))
MsgBox(0, 0, DllStructGetData($v_Struct, 1))
$v_Struct = 0
 楼主| 发表于 2023-2-2 15:20:16 | 显示全部楼层
本帖最后由 citysvip 于 2023-2-2 15:21 编辑

谢谢两位,提供了思路,但都是有问题的。最终代码在2楼基础上取得,结果返回的是一个数组,第一个是函数的返回值,然后是后面的参数的值。
#include <array.au3>
$result=DllCall("SSCardDriver.dll", "long", "iReadCardBas", "int", 1, "str", "")

_ArrayDisplay($result)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 02:09 , Processed in 0.081473 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表