阅读:3381回复:12
请教USB PC/SC驱动开发
做过USB PC/SC Driver的高手指点一下,
USB PC/SC 驱动应设置SmartCardExtension的哪些值? 需不需要硬件提供特殊的信息(事件)? 若有Source code参考的话感激不尽! 我试着将2000DDK中的SmartCard(串口)例子改成USB的,一连读卡器就蓝屏 |
|
沙发#
发布于:2004-07-22 16:17
我又遇到问题了,正常的PC/SC设备如果在W2K登录界面(或锁定界面)插入时,Windows应该弹出PIN对话框,可是我的没有,微软的WHQL SmartCard测试工具中Reader Test中也无法看到设备,不知道有什么不对劲
|
|
|
板凳#
发布于:2004-07-22 16:12
的确是在StartDevice中处理Configuration的,至于为何死机,那就要看具体情况了,死机时SoftICE有什么提示?
|
|
|
地板#
发布于:2004-07-21 17:48
要访问USB,首先要作一些初始化工作如SelectConfiguration等,在原来的USB驱动程序里,这些在IRP_MJ_Create处理里完成,对应于应用层调用CreateFile()时。
但在PC/SC驱动中没有对IRP_MJ_Create作处理,由SmartCard library来管理Reader的操作,所以现在的USB初始化过程该放到哪里?我试图加在USBStartDevice()里,但一下就死机 |
|
地下室#
发布于:2004-07-21 16:06
先恭喜你了, :)
|
|
5楼#
发布于:2004-07-20 14:43
确实看起来差不多了,试着创建了一个Thread,每隔2秒读取一下卡片状态,有状态改变时赋值相应State,然后直接CompleteSmartCardTracking,拔卡,插卡,监视器立刻就有反应了,一切看起来都那么美好,我的奖金.......随手拔除Reader,直接黑屏!KAO,SoftICE下显示Break Du to Page Fault,估计是个低级错误,我对Windows编程还是菜鸟,本职是搞单片机的,对于内存向来是有完全的控制欲望,该死的比尔。还是去看看例子,我的Thread就是直接创建,内部作了个定时器,无限循环,移除设备时,根据一个全局变量直接break;PsTerminateSystemThread( STATUS_SUCCESS );
,不知道是否妥当,对于自旋锁它认识我,我不认识它。 驱动是为公司的新产品做的,不太好源码奉上,其实就是一行一行照着DDK改的,串口改USB,你有什么问题我们可以拿出来一起讨论阿。可以公开的我也不会隐瞒 |
|
|
6楼#
发布于:2004-07-19 15:18
可能是Source Manager一直在监控着驱动,获得CardTracking事件响应后重设CardTracking监控事件.
这样你的驱动应差不多快出来了,能否参考一下? |
|
7楼#
发布于:2004-07-19 14:02
中午试着在某一时刻强制将CurrentState置为Scard_Absent,然后直接调用ComletedCardTracking,卡片监视器中的状态立即就改变了,跟踪内核发现,SmartCardTracking紧接着被系统又调用了一次,是否可以这样理解,正如Rayyang2000所说,状态改变后完成系统下发的那个IRP,系统会再下发一个,ComletedCardTracking是直接用DDK的例子改的
|
|
|
8楼#
发布于:2004-07-19 12:24
看来你的情况要好一些,我这里是用SmartCard工具就不认识我的读卡器设备,要不就蓝屏,谈不上后面的过程,
不过关于你的问题,我献点拙见: 1.可以用PsCreateSystemThread创建内核线程,具体控制交互模式,在DDK的SmartCard源码中的PCI口例子中有。 2.通知Source Manager的工作例子中应该都实现了,我觉得模仿两个例子中一个的流程框架就可以了 一起努力! :) |
|
9楼#
发布于:2004-07-19 09:56
我现在搞得PCSC的驱动遇到一个问题:如何进行SmartCardTracking?
DDK的例子是串口的,用口线跟踪就可以了,现在是USB的我就不知道该怎么办了,我们想了个方法,但是主要要解决两个问题:一,如何在驱动中建立一个线程,或者设置一个定时器,每隔一段时间察看一下卡片状态。二,得到卡片状态后如何向SmartCardCourceManager提交更新? |
|
|
10楼#
发布于:2004-07-12 16:38
两个人摸索了两周了,现在还是没有解决问题,关键是将例子中的PC/SC驱动的架构套到我原来的旧的USB驱动处理上后,运行起来总很多地方出乎意料,测试又困难。
哪位热心人指点一下(合并DDK例子中的PC/SC驱动框架和原始的USB驱动处理时的重点,或有别的更好的路),加分是一定的。 |
|
11楼#
发布于:2004-07-12 16:18
谢了,但我现在不想对硬件做太大改动,毕竟那可能牵涉到模具等很多问题......
|
|
12楼#
发布于:2004-07-12 10:18
FTDI公司提供USB开发的全新芯片,FT8U232、245,芯片直接把USB信号转换为RS-232信号和FIFO,开发者所做的只是对FIFO的操作,根本不需要对USB有任何了解均可开发USB的外设。
芯片本身提供定制的设备驱动程序。不再需要开发驱动程序,开发者编程只是同以前的串口操作大体相似。 李友富(Ken Lee) Cyberwin Technology Ltd. (Shenzhen Office) Add.: Unit 1402, 14/F., News Building, 2 Shennazhong Road, Shenzhen City Tel.: 0755-82091099 82092063-811 Fax: 0755-82091884 monile phone : 13828832574 website: www.cyberwin.com.cn |
|
|