The SCARD_READER_CAPABILITIES structure holds state information about the reader. It must be completely maintained by the driver.
typedef struct _SCARD_READER_CAPABILITIES {
//
// Supported protocol by the reader/driver
//
struct {
ULONG Async;
ULONG Sync;
} SupportedProtocols;
//
// Type of reader (Serial/USB/PCMCIA/Keyboard etc.)
//
ULONG ReaderType;
//
// Mechanical characteristics like SCARD_READER_SWALLOWS etc.
//
ULONG MechProperties;
//
// Current state of reader (card present/removed/activated)
//
ULONG CurrentState;
//
// The channel ID the reader uses depending on the type of reader:
// - Port number for serial reader
// - Port number for par reader
// - Scsi id for scsi reader
// - 0 for keyboard reader
// - device number for USB
//
ULONG Channel;
//
// Clock rates in KHz encoded as little endian
// (I.e. 3.58MHz is encoded as 3580)
//
struct {
ULONG Default;
ULONG Max;
} CLKFrequency;
//
// Data rates in bps encoded as little endian
//
struct {
ULONG Default;
ULONG Max;
} DataRate;
//
// Maximum IFSD supported by IFD
//
ULONG MaxIFSD;
//
// Type of power management the card supports
// (0 = IFD does not support power management)
//
ULONG PowerMgmtSupport;
//
// Reserved, do not use
//
ULONG Reserved[25];
} SCARD_READER_CAPABILITIES, *PSCARD_READER_CAPABILITIES;
The following members must be maintained by the driver:
Type | Meaning |
---|---|
SCARD_READER_TYPE_SERIAL | Serial reader. |
SCARD_READER_TYPE_PCMCIA | PCMCIA reader. |
SCARD_READER_TYPE_KEYBOARD | Keyboard attached reader. |
SCARD_READER_TYPE_USB | USB reader. |
Status | Meaning |
---|---|
SCARD_UNKNOWN | The reader does not know the status. |
SCARD_ABSENT | No card is currently inserted. |
SCARD_PRESENT | A card is inserted. |
SCARD_SWALLOWED | A card is inserted and the reader has swallowed it. |
SCARD_POWERED | The card is powered, but the reader does not know its mode. |
SCARD_NEGOTIABLE | A card is inserted and awaits protocol negotiation. |
SCARD_SPECIFIC | A card is inserted and a protocol has been selected. |
Property | Meaning |
---|---|
SCARD_READER_SWALLOWS | Reader has a swallowing mechanism. |
SCARD_READER_EJECTS | Reader is able to eject the card. |
SCARD_READER_CONFISCATES | Reader is able to capture the card. |