public Readers(ReaderScope scope) { uint retVal; switch (scope) { case ReaderScope.Null: context = new CardContextSafeHandler(IntPtr.Zero); break; case ReaderScope.System: retVal = NativeMethods.SCardEstablishContext(ContextScope.SCARD_SCOPE_SYSTEM, IntPtr.Zero, IntPtr.Zero, out context); if (retVal != 0) { throw new InvalidOperationException("Failed to create static context for reader: 0x" + retVal.ToString("X")); } break; case ReaderScope.User: retVal = NativeMethods.SCardEstablishContext(ContextScope.SCARD_SCOPE_USER, IntPtr.Zero, IntPtr.Zero, out context); if (retVal != 0) { throw new InvalidOperationException("Failed to create static context for reader: 0x" + retVal.ToString("X")); } break; } List = new List <string>(); UpdateList(); }
public Readers(ReaderScope scope) { uint retVal; switch (scope) { case ReaderScope.Null: context = new CardContextSafeHandler(IntPtr.Zero); break; case ReaderScope.System: retVal = NativeMethods.SCardEstablishContext(ContextScope.SCARD_SCOPE_SYSTEM, IntPtr.Zero, IntPtr.Zero, out context); if (retVal != 0) { throw new InvalidOperationException("Failed to create static context for reader: 0x" + retVal.ToString("X")); } break; case ReaderScope.User: retVal = NativeMethods.SCardEstablishContext(ContextScope.SCARD_SCOPE_USER, IntPtr.Zero, IntPtr.Zero, out context); if (retVal != 0) { throw new InvalidOperationException("Failed to create static context for reader: 0x" + retVal.ToString("X")); } break; } int size = 0; //List the readers //todo::listen for new readers changes (via the "\\?PnP?\Notification" reader) char[] readers = null; retVal = NativeMethods.SCardListReaders(context, null, readers, ref size); if (retVal != 0 && retVal != 0x8010002E) { throw new InvalidOperationException("Failed to list readers (length): 0x" + retVal.ToString("X")); } if (retVal == 0x8010002E) //no readers { List = new List <string>(0); } else { readers = new char[size]; retVal = NativeMethods.SCardListReaders(context, null, readers, ref size); if (retVal != 0) { throw new InvalidOperationException("Failed to list readers: 0x" + retVal.ToString("X")); } List = MultiString.ToStringList(readers); } }
public Readers(ReaderScope scope) { uint retVal; switch (scope) { case ReaderScope.Null: context = new CardContextSafeHandler(IntPtr.Zero); break; case ReaderScope.System: retVal = NativeMethods.SCardEstablishContext(ContextScope.SCARD_SCOPE_SYSTEM, IntPtr.Zero, IntPtr.Zero, out context); if (retVal != 0) throw new InvalidOperationException("Failed to create static context for reader: 0x" + retVal.ToString("X")); break; case ReaderScope.User: retVal = NativeMethods.SCardEstablishContext(ContextScope.SCARD_SCOPE_USER, IntPtr.Zero, IntPtr.Zero, out context); if (retVal != 0) throw new InvalidOperationException("Failed to create static context for reader: 0x" + retVal.ToString("X")); break; } }