This interface supports abstract access to any smart card terminal, regardless of the actual driver technology. An instance of this interface is always bound to a particular card terminal unit installed in the system.

Namespace: CardWerk.SmartCard
Assembly: CardWerk.SmartCard (in CardWerk.SmartCard.dll)

Public Interface ICardTerminal
This language is not supported or no code example is available.
public interface ICardTerminal
This language is not supported or no code example is available.
public interface class ICardTerminal
This language is not supported or no code example is available.
public interface ICardTerminal
This language is not supported or no code example is available.
Name Description
Public property Config Returns the configuration information with which this card terminal was initialized.
Public property FunctionalUnits Indicates which functional units are available with this card terminal. The availability of certain functional units classifies the card terminal according to the ZKA. Other units indicate support for card ejection and positioning.
Public property InternalName This is the internal name of this card terminal. This name may be more useful to the programmer than to the user.
Public property ManufacturerName Name of the manufacturer of this card terminal.
Public property PhysicalConnection Returns descriptive information about the physical connector that this card terminal is attached to. This should use some common notation such as COM1, LPT1 or USB.
Public property ProductAdditionalInfo Additional information about the product that is neither its name, nor some version information. This can be anything that the card terminal manufacturer wants to tell.
Public property ProductName Name of the product itself. Short and clear.
Public property ProductSerialNumber Serial number of the product if available.
Public property ProductVersion Version of the product. It is not defined whether this is some firmware version or some driver version. Thus it is suggested that the returned string supplies as much human readable version information as possible.
Public property Slots Indicates the total number of slots of this card terminal.
Public property UserSlots Indicates the number of user accessible card slots of this card terminal.
Top
Name Description
Public method BeginTransaction(int) Begins a card transaction.
Public method ConnectCard(int, CardTypes, out byte[]) Powers up the inserted card and attempts to establish a communication connection with it. Once the connection is established the card is exclusively locked and cannot be accessed by another application or thread.
Public method DeliverCard(int, bool) Explicitly requests that an inserted card is delivered or captured. This is only applicable if the card terminal has such mechanism, in most cases it won't.
Public method DisconnectCard(int) Powers down the inserted card, and terminates the logical connection with it.
Public method EndTransaction(int) Ends a card transaction.
Public method Init(CardTerminalConfig) Initializes this card terminal with the given configuration information.
Public method IsCardPresent(int, ref bool) Quick poll that indicates whether a card is present in a card terminal slot. This method can be called from any thread. It is the only multi-threading safe method of this interface.
Public method ReconnectCard(int, out byte[]) Resets a previously established communication connection with the card.
Public method ResetCardTerminal() Entirely resets the card terminal, disconnecting (powering down) any existing card connection.
Public method SendCommand(int, CardCommandAPDU) Sends the command APDU to the given card terminal slot and returns the response APDU from the inserted card.
Top

As an implementation of this interface very likely holds onto some unmanaged resources, it is required that all objects implementing this interface, also implement the IDisposable interface, releasing its unmanaged resources in its Dispose method.

The SCard Class Library currently provides two implementations of this Interface, one is based on its PC/SC wrapper classes and another is based on its CT-API wrapper classes. However, future versions may include additional implementations. Also, it is possible for third parties to supply additional implementations of this interface.

Being an abstraction, this Interface only supports features that are common among different driver technologies. Hence, more sophisticated applications might need to use the low level wrappers directly.

The methods of the ICardTerminal interface are only to be called from the owning thread. There is a single exception: The method IsCardPresent must be callable from any thread.

In order to simplify implementations of this interface the common base class CardTerminalBase is supplied.

Card terminals that include a PIN pad and support secure PIN entry shall implement the interface ICardTerminalClass2 alongside this interface.

.NET Framework

Supported in: 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

.NET Core

Supported in: 2.0, 2.1, 2.2, 3.0, 3.1, 5.0, 6.0, 7.0, 8.0

.NET Standard

Supported in: 2.0