阅读:2910回复:0
基于Smartcard的Usb Token的开发
我为厂家作了一个Usb token的Smartcard驱动程序,该卡有个缺陷--不支持ColdReset以及PowerDown的操作,因此我使用WarmReset替代ColdReset,而对于PowerDown操作仅仅简单的return STATUS_SUCCESS。
1)我运行VB的客户端测试程序的时候,在SCardConnect函数中死活过不了,查了一下日志,发现是在IO_SMARTCARD_SET_PROTOCOL调用的时候出错,而且根本没有进入我的RDF_SET_PROTOCOL的回调函数中。我进行二进制调试,发现在SmartcardDeviceControl的函数中,在调用RDF_SET_PROTOCOL之前,调用了SmartcardUpdateCapabilities函数,而当时的ATR.Length==0,因此报0xc000014的错误。但是这个问题如何解决? 2)在运行期间当DeviceIoControl调用MajorIoControl=IOCTL_SMARTCARD_SET_ATTRIBUTE, MinorIoControl=SCARD_ATTR_DEVICE_IN_USE,函数返回0xc0000bb的错误,不过这个好像是MS的错误,因为二进制调试中,smclib好像对所有不是SCARD_ATTR_SUPRESS_T1_IFS_REQUEST的请求都产生这样的错误,是否真的如此? 3)我发现在ColdReset的时候,当我调用SmartcardUpdateCapabilities, SmartcardExtension->ReaderCapabilities.CurrentState变成了SCARD_SPECIFIC(原来是SCARD_PRESENT),不知道这个状态的改变会否影响到Smclib的内部操作? 谢谢 |
|