阅读:3320回复:12
关于Smart card 的问题
如何实现对智能卡Insert / Remove事件的处理,目前,我在使用ifdtest.exe进行测试时,执行Insert Card 或 Remove Card时,无法进入我的探卡程序,请问如何解决?谢谢!
|
|
沙发#
发布于:2001-10-11 14:08
[QUOTE]原本由 hongbo 发表
[B]斑竹,我想给你加分怎么办? “插入/拔出卡的时候,完成以前系统发下来的那个irp。”斑竹你这一句话说到了我的心里去了,万分感谢! “以前系统发下来的那个irp”,这里的IRP是否指得是先前将一个执行插拔卡的irp压入系统中,等待有插拔卡动作就弹出并执行的irp? 那么如果有两个读卡器,先后压入各自的irp,这样也只有最后一个可以用了,因为不管怎样对最后一个读卡器操作,当前等待的irp都是最后一个读卡器的irp,请帮助我分析,斑竹!!! 我要给你加分! [/B][/QUOTE] 每个reader都有自己的fdo,怎么会和别人冲突呢? |
|
|
板凳#
发布于:2001-10-09 14:02
斑竹,我想给你加分怎么办?
“插入/拔出卡的时候,完成以前系统发下来的那个irp。”斑竹你这一句话说到了我的心里去了,万分感谢! “以前系统发下来的那个irp”,这里的IRP是否指得是先前将一个执行插拔卡的irp压入系统中,等待有插拔卡动作就弹出并执行的irp? 那么如果有两个读卡器,先后压入各自的irp,这样也只有最后一个可以用了,因为不管怎样对最后一个读卡器操作,当前等待的irp都是最后一个读卡器的irp,请帮助我分析,斑竹!!! 我要给你加分! |
|
|
地板#
发布于:2001-10-09 11:02
[QUOTE]原本由 hongbo 发表
[B]是的,“有插拔卡的动作的时候,是由你通知系统的,”我现在想知道当插拔卡时就执行cardtracking呢?还是另外设置一个函数,这两个函数什么关系? 我曾有这样的想法:插拔卡时不执行程序,当每次传输数据时再判断,不知道这样可不可以,斑竹和DK-boy帮我分析分析吧! [/B][/QUOTE] 比较久远了。。。记得是在知道插入/拔出卡的时候,完成以前系统发下来的那个irp。 |
|
|
地下室#
发布于:2001-09-30 11:36
[QUOTE]原本由 hongbo 发表
[B]是的,“有插拔卡的动作的时候,是由你通知系统的,”我现在想知道当插拔卡时就执行cardtracking呢?还是另外设置一个函数,这两个函数什么关系? 我曾有这样的想法:插拔卡时不执行程序,当每次传输数据时再判断,不知道这样可不可以,斑竹和DK-boy帮我分析分析吧! [/B][/QUOTE] 稍后发email给你吧! |
|
|
5楼#
发布于:2001-09-30 10:53
是的,“有插拔卡的动作的时候,是由你通知系统的,”我现在想知道当插拔卡时就执行cardtracking呢?还是另外设置一个函数,这两个函数什么关系?
我曾有这样的想法:插拔卡时不执行程序,当每次传输数据时再判断,不知道这样可不可以,斑竹和DK-boy帮我分析分析吧! |
|
|
6楼#
发布于:2001-09-29 15:28
[QUOTE]原本由 rayyang2000 发表
[B]有插拔卡的动作的时候,是由你通知系统的。 [/B][/QUOTE] rayyang2000说的对 [DK-boy 编辑于 2001-09-29 16:22] |
|
|
7楼#
发布于:2001-09-29 10:30
有插拔卡的动作的时候,是由你通知系统的。
|
|
|
8楼#
发布于:2001-09-28 15:38
从我这里的程序来看,每次都是IOCTL_SMARTCARD_IS_ABSENT后,就调用了cardTracking,其实我也有些不太知道,为何IOCTL_SMARTCARD_IS_PRESENT 就不调用呢?DK-boy 可以给大家伙讲讲吗?
在这个问题上,是否插拔卡就执行cardTracking呢?还是需要另外写一个函数。 |
|
|
9楼#
发布于:2001-09-28 13:50
[QUOTE]原本由 hongbo 发表
[B]在你设置了回调函数后,是否Device Control: IOCTL_SMARTCARD_IS_ABSENT后就调用了RD100CardTracking? [/B][/QUOTE] 并不是每次都可以进入回调例程的,和状态有关!!! [DK-boy 编辑于 2001-09-29 16:25] |
|
|
10楼#
发布于:2001-09-26 10:44
在你设置了回调函数后,是否Device Control: IOCTL_SMARTCARD_IS_ABSENT后就调用了RD100CardTracking?
|
|
|
11楼#
发布于:2001-08-21 16:11
我的CardTracking程序如下:
NTSTATUS PCSC_CardTracking( PSMARTCARD_EXTENSION SmartcardExtension ) /*++ CBCardTracking: callback handler for SMCLIB RDF_CARD_TRACKING. the requested event was validated by the smclib (i.e. a card removal request will only be passed if a card is present). for a win95 build STATUS_PENDING will be returned without any other action. for NT the cancel routine for the irp will be set to the drivers cancel routine. Arguments: SmartcardExtension context of call Return Value: STATUS_PENDING --*/ { KIRQL CancelIrql; SmartcardDebug( DEBUG_TRACE, ( "PSCR!CBCardTracking: Enter\n" ) ); // set cancel routine IoAcquireCancelSpinLock( &CancelIrql ); IoSetCancelRoutine( SmartcardExtension->OsData->NotificationIrp, PCSC_Cancel ); IoReleaseCancelSpinLock( CancelIrql ); SmartcardDebug( DEBUG_TRACE, ( "PSCR!CBCardTracking: Exit \n" ) ); return( STATUS_PENDING ); } 请问系统是如何处理卡片的插拔,工作流程是什么样的?它有自己程序去探卡吗?系统如何去执行我自己的探卡程序? 谢谢! |
|
12楼#
发布于:2001-08-21 12:57
设置一个插拔卡的触发Event就可以了!
[DK-boy 编辑于 2001-09-29 16:24] [DK-boy 编辑于 2001-09-29 16:24] |
|
|