public OperationResult GetCardState(Card cardToRead)
{
if (cardToRead == null) throw new ArgumentNullException("cardToRead");
var sizeOfReadersListStructure = 0;
var cardStateStatus = 0;
var dwActProtocol = 0;
var tmpAtrBytes = new byte[257];
var tmpAtrLen = 32;
var returnCode = WinscardWrapper.SCardStatus(cardToRead.ConnectionHandle, cardToRead.CardreaderName, ref sizeOfReadersListStructure, ref cardStateStatus, ref dwActProtocol, ref tmpAtrBytes[0], ref tmpAtrLen);
OperationResult result = ReturnCodeManager.GetErrorMessage(returnCode);
if (result.IsSuccessful)
{
cardToRead.State = new CardState(cardStateStatus);
cardToRead.Atr = tmpAtrBytes.Take(tmpAtrLen).ToArray();
cardToRead.Protocol = dwActProtocol;
}
return result;
}