caoyu
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2002-01-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3320回复:12

关于Smart card 的问题

楼主#
更多 发布于:2001-08-21 09:14
如何实现对智能卡Insert / Remove事件的处理,目前,我在使用ifdtest.exe进行测试时,执行Insert Card 或 Remove Card时,无法进入我的探卡程序,请问如何解决?谢谢!
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-10-11 14:08
[QUOTE]原本由 hongbo 发表
[B]斑竹,我想给你加分怎么办?

“插入/拔出卡的时候,完成以前系统发下来的那个irp。”斑竹你这一句话说到了我的心里去了,万分感谢!

“以前系统发下来的那个irp”,这里的IRP是否指得是先前将一个执行插拔卡的irp压入系统中,等待有插拔卡动作就弹出并执行的irp?

那么如果有两个读卡器,先后压入各自的irp,这样也只有最后一个可以用了,因为不管怎样对最后一个读卡器操作,当前等待的irp都是最后一个读卡器的irp,请帮助我分析,斑竹!!!

我要给你加分! [/B][/QUOTE]
每个reader都有自己的fdo,怎么会和别人冲突呢?
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
hongbo
驱动牛犊
驱动牛犊
  • 注册日期2001-06-27
  • 最后登录2009-02-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-10-09 14:02
斑竹,我想给你加分怎么办?

“插入/拔出卡的时候,完成以前系统发下来的那个irp。”斑竹你这一句话说到了我的心里去了,万分感谢!

“以前系统发下来的那个irp”,这里的IRP是否指得是先前将一个执行插拔卡的irp压入系统中,等待有插拔卡动作就弹出并执行的irp?

那么如果有两个读卡器,先后压入各自的irp,这样也只有最后一个可以用了,因为不管怎样对最后一个读卡器操作,当前等待的irp都是最后一个读卡器的irp,请帮助我分析,斑竹!!!

我要给你加分!
前进是我的唯一追求!
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-10-09 11:02
[QUOTE]原本由 hongbo 发表
[B]是的,“有插拔卡的动作的时候,是由你通知系统的,”我现在想知道当插拔卡时就执行cardtracking呢?还是另外设置一个函数,这两个函数什么关系?

我曾有这样的想法:插拔卡时不执行程序,当每次传输数据时再判断,不知道这样可不可以,斑竹和DK-boy帮我分析分析吧! [/B][/QUOTE]
比较久远了。。。记得是在知道插入/拔出卡的时候,完成以前系统发下来的那个irp。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-09-30 11:36
[QUOTE]原本由 hongbo 发表
[B]是的,“有插拔卡的动作的时候,是由你通知系统的,”我现在想知道当插拔卡时就执行cardtracking呢?还是另外设置一个函数,这两个函数什么关系?

我曾有这样的想法:插拔卡时不执行程序,当每次传输数据时再判断,不知道这样可不可以,斑竹和DK-boy帮我分析分析吧! [/B][/QUOTE]
稍后发email给你吧!
喜欢清静?享受人生
hongbo
驱动牛犊
驱动牛犊
  • 注册日期2001-06-27
  • 最后登录2009-02-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-09-30 10:53
是的,“有插拔卡的动作的时候,是由你通知系统的,”我现在想知道当插拔卡时就执行cardtracking呢?还是另外设置一个函数,这两个函数什么关系?

我曾有这样的想法:插拔卡时不执行程序,当每次传输数据时再判断,不知道这样可不可以,斑竹和DK-boy帮我分析分析吧!
前进是我的唯一追求!
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-09-29 15:28
[QUOTE]原本由 rayyang2000 发表
[B]有插拔卡的动作的时候,是由你通知系统的。 [/B][/QUOTE]
rayyang2000说的对
[DK-boy 编辑于 2001-09-29 16:22]
喜欢清静?享受人生
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-09-29 10:30
有插拔卡的动作的时候,是由你通知系统的。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
hongbo
驱动牛犊
驱动牛犊
  • 注册日期2001-06-27
  • 最后登录2009-02-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-09-28 15:38
从我这里的程序来看,每次都是IOCTL_SMARTCARD_IS_ABSENT后,就调用了cardTracking,其实我也有些不太知道,为何IOCTL_SMARTCARD_IS_PRESENT 就不调用呢?DK-boy 可以给大家伙讲讲吗?

在这个问题上,是否插拔卡就执行cardTracking呢?还是需要另外写一个函数。
前进是我的唯一追求!
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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]
喜欢清静?享受人生
hongbo
驱动牛犊
驱动牛犊
  • 注册日期2001-06-27
  • 最后登录2009-02-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2001-09-26 10:44
在你设置了回调函数后,是否Device Control: IOCTL_SMARTCARD_IS_ABSENT后就调用了RD100CardTracking?
前进是我的唯一追求!
caoyu
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2002-01-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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 );

}

请问系统是如何处理卡片的插拔,工作流程是什么样的?它有自己程序去探卡吗?系统如何去执行我自己的探卡程序?
谢谢!
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2001-08-21 12:57
设置一个插拔卡的触发Event就可以了!

[DK-boy 编辑于 2001-09-29 16:24]
[DK-boy 编辑于 2001-09-29 16:24]
喜欢清静?享受人生
游客

返回顶部