zoukankan      html  css  js  c++  java
  • 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:下指令給讀卡機並讀取讀卡機的回覆值。

  • 相关阅读:
    第九届蓝桥杯JavaA组省赛真题
    Qt的IDE开发环境(KDevelop,MonKey Studio,QDevlop,Dev-cpp,Cobras,Edyuk)
    Eclipse+Qt开发环境设置(Linux和Win)
    Visual Studio 2005安装qt-win-commercial-src-4.3.1,并设置环境变量
    在VC6.0中编译头文件时产生moc文件
    Qt配置信息设置(QSettings在不同平台下的使用路径)
    应对业务需求变化?
    开发环境准备:Ruby on Rails开发环境配置
    VS2013中Python学习环境搭建
    JQUERY 插件开发——MENU(导航菜单)
  • 原文地址:https://www.cnblogs.com/bingyun84/p/1515255.html
Copyright © 2011-2022 走看看