public bool ResetReader( string SelectedReader, out string ATR) { String atr_temp = ""; String s = ""; bool boRet = true; ATR = atr_temp; // Disconnect to with reset disposition LastError = WinSCard.SCardDisconnect( _cardHandle, (int)SCardReaderDisposition.Reset); if (!IsSuccess(LastError)) { return(false); } // Connect to selected reader if (!ConnectReader(SelectedReader)) { return(false); } // Init readerState SCARD_READERSTATE readerState = new SCARD_READERSTATE { RdrName = SelectedReader, RdrCurrState = 0, RdrEventState = 0, UserData = "Card", }; // Get Status Change LastError = WinSCard.SCardGetStatusChange( _context, 0, ref readerState, 1); if (!IsSuccess(LastError)) { return(false); } StringBuilder hex = new StringBuilder(readerState.ATRValue.Length * 2); foreach (byte b in readerState.ATRValue) { hex.AppendFormat("{0:X2}", b); } atr_temp = hex.ToString(); ATR = atr_temp; return(boRet); }
public bool DisconnectReader() { try { // Disconnect to selected Card Handle LastError = WinSCard.SCardDisconnect( _cardHandle, (int)SCardReaderDisposition.Unpower); if (!IsSuccess(LastError)) { return(false); } return(true); } catch (Exception) { throw; } }