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