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); }
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; }