示例#1
0
        /// <summary>
        /// Connects to the reader with a card
        ///     Note Winscard requires a card
        /// </summary>
        /// <param name="ReaderName">The name of the reader to connect to</param>
        /// <param name="SmartCardShareTypes">The perfered protocols to use</param>
        /// <returns></returns>
        public WinSmartCard CardConnect(SmartCardShareTypes SmartCardShareTypes, SmartCardShareTypes ShareType = SmartCardShareTypes.SCARD_SHARE_SHARED, SmartCardProtocols Protocols = SmartCardProtocols.SCARD_PROTOCOL_Any)
        {
            if (Disposed)
            {
                throw new ObjectDisposedException("WinSmartCardContext");
            }
            int Card     = 0;
            int Protocol = 0;

            LastResultCode = WinSCard.SCardConnect(_Context, ConnectedReaderName, ShareType,
                                                   Protocols, ref Card, ref Protocol);

            if (LastResultCode != ErrorCodes.SCARD_S_SUCCESS)
            {
                throw new WinSCardException(LastResultCode);
            }

            this.Card = new WinSmartCard(this, Card);

            return(this.Card);
        }
 /// <summary>
 /// C# Friendly quick wrapper Addtional wrapping can found at WinSmartCard and Win SmardCardContext
 /// </summary>
 /// <param name="Context">Context</param>
 /// <param name="ReaderName">The Readers Name</param>
 /// <param name="ShareMode">The Perferd Sandbox</param>
 /// <param name="Protocol">The Perferd protocol</param>
 /// <param name="Card">The Card</param>
 /// <param name="ActiveProtocol">The Active protocol</param>
 /// <returns>The Error Code</returns>
 internal static ErrorCodes SCardConnect(int Context, string ReaderName, SmartCardShareTypes ShareMode, SmartCardProtocols Protocol, ref int Card, ref int ActiveProtocol)
 {
     return((ErrorCodes)SCardConnectImport(Context, ReaderName, (int)ShareMode, (int)Protocol, ref Card, ref ActiveProtocol));
 }