日期:2014-05-17  浏览次数:20870 次

使用C#调用PC\SC接口返回读卡器数量不对
using System;

using System.Text;

using System.Runtime.InteropServices;

class PCSC
{

    public struct SCARD_IO_REQUEST
    {

        public int dwProtocol;

        public int cbPciLength;

    }

    [DllImport("WinScard.dll")]

    public static extern int SCardEstablishContext(uint dwScope, int nNotUsed1, int nNotUsed2, ref uint 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(uint hContext, string cGroups, ref string cReaderLists, ref int nReaderCount);

    [DllImport("WinScard.dll")]

    public static extern int SCardFreeMemory(uint 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")]