public CardReader() { int result = 0; result = WinConCard.SCardEstablishContext(WinConCard.Scope.SCARD_SCOCPE_SYSTEM, IntPtr.Zero, IntPtr.Zero, out context); if (result != WinConCard.SCARD_S_SUCCESS) { Debug.WriteLine(WinConCard.SCardErrorMessage(result)); } byte[] readers = null; uint readerCount = 0; result = WinConCard.SCardListReaders(context, null, readers, ref readerCount); readers = new byte[readerCount]; result = WinConCard.SCardListReaders(context, null, readers, ref readerCount); availableReaders = new ASCIICon(readers); if (result != WinConCard.SCARD_S_SUCCESS) { Debug.WriteLine(WinConCard.SCardErrorMessage(result)); } //Start a background worker thread which monitors available card readers. if ((availableReaders.Count > 0)) { readerStates = new WinConCard.SCARD_READERSTATE[availableReaders.Count]; for (int i = 0; i < readerStates.Length; i++) { readerStates[i].szReader = availableReaders.ToArray()[i]; } monitorThread = new BackgroundWorker(); monitorThread.WorkerSupportsCancellation = true; monitorThread.DoWork += WaitChangeStatus; monitorThread.RunWorkerAsync(); } }
public CardDExcep(int result) : base(WinConCard.SCardErrorMessage(result)) { Result = result; }