Lando.LowLevel.LowLevelCardReader.WaitForChanges C# (CSharp) Method

WaitForChanges() public method

public WaitForChanges ( Lando.LowLevel.CardreaderStatus &statuses ) : Lando.LowLevel.ResultsTypes.OperationResult
statuses Lando.LowLevel.CardreaderStatus
return Lando.LowLevel.ResultsTypes.OperationResult
        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;
        }