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