Esempio n. 1
0
        public OperationResult WaitForChanges(ref CardreaderStatus[] statuses)
        {
            var resourceManagerContext = EstablishContextIfNotEstablished();

            var scardStatuses = new WinscardWrapper.SCARD_READERSTATE[statuses.Length];

            for (var i = 0; i < statuses.Length; i++)
                scardStatuses[i] = statuses[i].ToScardStatus();

            Logger.TraceEvent(TraceEventType.Verbose, 0, "SCardGetStatusChange started");
            Logger.Flush();

            var returnCode = WinscardWrapper.SCardGetStatusChange(
                resourceManagerContext,
                WinscardWrapper.INFINITE,
                scardStatuses,
                scardStatuses.Length);

            Logger.TraceEvent(TraceEventType.Verbose, 0, "SCardGetStatusChange ended");
            Logger.Flush();

            var operationResult = ReturnCodeManager.GetErrorMessage(returnCode);

            if (operationResult.IsSuccessful)
            {
                for (var i = 0; i < statuses.Length; i++)
                    statuses[i].NewStatusFlags = scardStatuses[i].dwEventState;
            }

            return operationResult;
        }
Esempio n. 2
0
        private void RaiseCardreaderDisconnectedEvent(CardreaderStatus cardreaderStatus)
        {
            Logger.TraceEvent(TraceEventType.Verbose, 0, "Raising CardreaderDisconnected event");
            Logger.Flush();

            SendOrPostCallback cb =
                state => CardreaderDisconnected(null, new WatcherCardreaderEventArgs(cardreaderStatus.Name));
            AsyncOperation.Post(cb, null);
        }