Example #1
0
        public SCardError GetStatusChange(IntPtr hContext, IntPtr dwTimeout, SCardReaderState[] rgReaderStates)
        {
            SCARD_READERSTATE[] readerstates = null;
            var cReaders = 0;

            if (rgReaderStates != null)
            {
                // copy the last known state into the buffer
                cReaders     = rgReaderStates.Length;
                readerstates = new SCARD_READERSTATE[cReaders];
                for (var i = 0; i < cReaders; i++)
                {
                    readerstates[i] = rgReaderStates[i].UnixReaderState;
                }
            }

            var rc = SCardHelper.ToSCardError(UnixNativeMethods.SCardGetStatusChange(
                                                  hContext,
                                                  dwTimeout,
                                                  readerstates,
                                                  (IntPtr)cReaders));

            if (rc != SCardError.Success || rgReaderStates == null)
            {
                return(rc);
            }

            for (var i = 0; i < cReaders; i++)
            {
                // replace with returned values
                rgReaderStates[i].UnixReaderState = readerstates[i];
            }

            return(rc);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="SCardReaderState"/> class.
 /// </summary>
 public SCardReaderState() {
     if (Platform.IsWindows) {
         _winscardRstate = new WINDOWS_SCARD_READERSTATE {
             // initialize embedded array
             rgbAtr = new byte[WinSCardAPI.MAX_ATR_SIZE],
             cbAtr = WinSCardAPI.MAX_ATR_SIZE
         };
     } else {
         _pcscliteRstate = new Interop.Unix.SCARD_READERSTATE {
             // initialize embedded array
             rgbAtr = new byte[PCSCliteAPI.MAX_ATR_SIZE],
             cbAtr = (IntPtr) PCSCliteAPI.MAX_ATR_SIZE
         };
     }
 }
Example #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SCardReaderState"/> class.
 /// </summary>
 public SCardReaderState()
 {
     if (Platform.IsWindows)
     {
         _winscardRstate = new WINDOWS_SCARD_READERSTATE {
             // initialize embedded array
             rgbAtr = new byte[WinSCardAPI.MAX_ATR_SIZE],
             cbAtr  = WinSCardAPI.MAX_ATR_SIZE
         };
     }
     else
     {
         _pcscliteRstate = new Interop.Unix.SCARD_READERSTATE {
             // initialize embedded array
             rgbAtr = new byte[PCSCliteAPI.MAX_ATR_SIZE],
             cbAtr  = (IntPtr)PCSCliteAPI.MAX_ATR_SIZE
         };
     }
 }
Example #4
0
        public SCardError GetStatusChange(IntPtr hContext, IntPtr dwTimeout, SCardReaderState[] rgReaderStates) {
            SCARD_READERSTATE[] readerstates = null;
            var cReaders = 0;

            if (rgReaderStates != null) {
                // copy the last known state into the buffer
                cReaders = rgReaderStates.Length;
                readerstates = new SCARD_READERSTATE[cReaders];
                for (var i = 0; i < cReaders; i++) {
                    readerstates[i] = rgReaderStates[i].UnixReaderState;
                }
            }

            var rc = SCardHelper.ToSCardError(SCardGetStatusChange(
                hContext,
                dwTimeout,
                readerstates,
                (IntPtr) cReaders));

            if (rc != SCardError.Success || rgReaderStates == null) {
                return rc;
            }

            for (var i = 0; i < cReaders; i++)
                // replace with returned values 
                rgReaderStates[i].UnixReaderState = readerstates[i];

            return rc;
        }