C#.net Smart Card PC/SC using WinSCard.Dll

最近做的一個案子要讀取健保卡的公開資料,可以讀取身分證字號、姓名、生日等資訊,發現非常好用,可以應用在一些需要大量填寫個人資料的地方,例如申請會員等,可改用讀取IC卡,就不需要填一堆資料,又因為健保IC卡的安全機制,所以不會有醫療資料外洩的疑慮。查了很多資料,以下是比較重要的部分指令:

首先將可能會用到的WinScard指令先Import進來:

 

        [DllImport("WinScard.dll")]

        public static extern int SCardEstablishContext(uint dwScope, int nNotUsed1,

        int nNotUsed2, ref int phContext);

        [DllImport("WinScard.dll")]

        public static extern int SCardReleaseContext(int phContext);

        [DllImport("WinScard.dll")]

        public static extern int SCardConnect(int hContext, string cReaderName,

        uint dwShareMode, uint dwPrefProtocol, ref int phCard, ref int ActiveProtocol);

        [DllImport("WinScard.dll")]

        public static extern int SCardDisconnect(int hCard, int Disposition);

        [DllImport("WinScard.dll")]

        public static extern int SCardListReaderGroups(int hContext, ref string cGroups, ref int nStringSize);

        [DllImport("WinScard.dll")]

        public static extern int SCardListReaders(int hContext, string cGroups,

        ref string cReaderLists, ref int nReaderCount);

        [DllImport("WinScard.dll")]

        public static extern int SCardFreeMemory(int hContext, string cResourceToFree);

        [DllImport("WinScard.dll")]

        public static extern int SCardGetAttrib(int hContext, uint dwAttrId,

        ref byte[] bytRecvAttr, ref int nRecLen);

        [DllImport("WinScard.dll")]

        public static extern int SCardTransmit(int hCard, ref SCARD_IO_REQUEST pioSendPci, byte[] pbSendBuffer, int cbSendLength, ref SCARD_IO_REQUEST pioRecvPci, ref byte[] pbRecvBuffer, ref int pcbRecvLength);

        [DllImport("WinScard.dll")]

        public static extern int SCardTransmit(int hCard, ref SCARD_IO_REQUEST pioSendPci, byte[] pbSendBuffer, int cbSendLength, ref SCARD_IO_REQUEST pioRecvPci, ref byte pbRecvBuffer, ref int pcbRecvLength);

 

依序下指令:

SCardEstablishContext:建立環境。

SCardListReaders:讀取本機的讀卡機。

SCardConnect:讀卡機連線。

SCardTransmit:下指令給讀卡機並讀取讀卡機的回覆值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值