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

GetCardState() public method

The function provides the current status of a smart card in a reader.
public GetCardState ( Lando.LowLevel.Card cardToRead ) : Lando.LowLevel.ResultsTypes.OperationResult
cardToRead Lando.LowLevel.Card
return Lando.LowLevel.ResultsTypes.OperationResult
        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;
        }