257 lines
9.3 KiB
C
257 lines
9.3 KiB
C
/*
|
|
* winsmcrd.h Win32 smart card device I/O control codes
|
|
*
|
|
* =========================================================================
|
|
*
|
|
* Open Watcom Project
|
|
*
|
|
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
|
|
*
|
|
* This file is automatically generated. Do not edit directly.
|
|
*
|
|
* =========================================================================
|
|
*/
|
|
|
|
#ifndef _NTDDSCRD_H2_
|
|
#define _NTDDSCRD_H2_
|
|
|
|
#ifndef _ENABLE_AUTODEPEND
|
|
#pragma read_only_file;
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Smart card protocol flags */
|
|
#define SCARD_PROTOCOL_UNDEFINED 0x00000000L
|
|
#define SCARD_PROTOCOL_T0 0x00000001L
|
|
#define SCARD_PROTOCOL_T1 0x00000002L
|
|
#define SCARD_PROTOCOL_RAW 0x00010000L
|
|
#define SCARD_PROTOCOL_TX (SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1)
|
|
#define SCARD_PROTOCOL_DEFAULT 0x80000000L
|
|
#define SCARD_PROTOCOL_OPTIMAL 0x00000000L
|
|
|
|
/* IOCTL_SMARTCARD_POWER parameters */
|
|
#define SCARD_POWER_DOWN 0L
|
|
#define SCARD_COLD_RESET 1L
|
|
#define SCARD_WARM_RESET 2L
|
|
|
|
/* Macro to define smart card device I/O control codes */
|
|
#define SCARD_CTL_CODE( x ) \
|
|
CTL_CODE( FILE_DEVICE_SMARTCARD, x, METHOD_BUFFERED, FILE_ANY_ACCESS )
|
|
|
|
/* SmartCard device I/O control codes */
|
|
#define IOCTL_SMARTCARD_POWER SCARD_CTL_CODE( 1 )
|
|
#define IOCTL_SMARTCARD_GET_ATTRIBUTE SCARD_CTL_CODE( 2 )
|
|
#define IOCTL_SMARTCARD_SET_ATTRIBUTE SCARD_CTL_CODE( 3 )
|
|
#define IOCTL_SMARTCARD_CONFISCATE SCARD_CTL_CODE( 4 )
|
|
#define IOCTL_SMARTCARD_TRANSMIT SCARD_CTL_CODE( 5 )
|
|
#define IOCTL_SMARTCARD_EJECT SCARD_CTL_CODE( 6 )
|
|
#define IOCTL_SMARTCARD_SWALLOW SCARD_CTL_CODE( 7 )
|
|
#define IOCTL_SMARTCARD_IS_PRESENT SCARD_CTL_CODE( 10 )
|
|
#define IOCTL_SMARTCARD_IS_ABSENT SCARD_CTL_CODE( 11 )
|
|
#define IOCTL_SMARTCARD_SET_PROTOCOL SCARD_CTL_CODE( 12 )
|
|
#define IOCTL_SMARTCARD_GET_STATE SCARD_CTL_CODE( 14 )
|
|
#define IOCTL_SMARTCARD_GET_LAST_ERROR SCARD_CTL_CODE( 15 )
|
|
#define IOCTL_SMARTCARD_GET_PERF_CNTR SCARD_CTL_CODE( 16 )
|
|
|
|
/* Maximums */
|
|
#define MAXIMUM_ATTR_STRING_LENGTH 32
|
|
#define MAXIMUM_SMARTCARD_READERS 10
|
|
|
|
/* Macro to create a smart card attribute value */
|
|
#define SCARD_ATTR_VALUE( p1, p2 ) ((((ULONG)(p1)) << 16) | (((ULONG)(p2)))
|
|
|
|
/* Smart card attribute classes */
|
|
#define SCARD_CLASS_VENDOR_INFO 1
|
|
#define SCARD_CLASS_COMMUNICATIONS 2
|
|
#define SCARD_CLASS_PROTOCOL 3
|
|
#define SCARD_CLASS_POWER_MGMT 4
|
|
#define SCARD_CLASS_SECURITY 5
|
|
#define SCARD_CLASS_MECHANICAL 6
|
|
#define SCARD_CLASS_VENDOR_DEFINED 7
|
|
#define SCARD_CLASS_IFD_PROTOCOL 8
|
|
#define SCARD_CLASS_ICC_STATE 9
|
|
#define SCARD_CLASS_PERF 0x7FFE
|
|
#define SCARD_CLASS_SYSTEM 0x7FFF
|
|
|
|
/* Smart card attributes */
|
|
#define SCARD_ATTR_VENDOR_NAME \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_VENDOR_INFO, 0x0100 )
|
|
#define SCARD_ATTR_VENDOR_IFD_TYPE \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_VENDOR_INFO, 0x0101 )
|
|
#define SCARD_ATTR_VENDOR_IFD_VERSION \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_VENDOR_INFO, 0x0102 )
|
|
#define SCARD_ATTR_VENDOR_IFD_SERIAL_NO \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_VENDOR_INFO, 0x0103 )
|
|
#define SCARD_ATTR_CHANNEL_ID \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_COMMUNICATIONS, 0x0110 )
|
|
#define SCARD_ATTR_PROTOCOL_TYPES \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_PROTOCOL, 0x0120 )
|
|
#define SCARD_ATTR_DEFAULT_CLK \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_PROTOCOL, 0x0121 )
|
|
#define SCARD_ATTR_MAX_CLK \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_PROTOCOL, 0x0122 )
|
|
#define SCARD_ATTR_DEFAULT_DATA_RATE \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_PROTOCOL, 0x0123 )
|
|
#define SCARD_ATTR_MAX_DATA_RATE \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_PROTOCOL, 0x0124 )
|
|
#define SCARD_ATTR_MAX_IFSD \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_PROTOCOL, 0x0125 )
|
|
#define SCARD_ATTR_POWER_MGMT_SUPPORT \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_POWER_MGMT, 0x0131 )
|
|
#define SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_SECURITY, 0x0140 )
|
|
#define SCARD_ATTR_USER_AUTH_INPUT_DEVICE \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_SECURITY, 0x0142 )
|
|
#define SCARD_ATTR_CHARACTERISTICS \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_MECHANICAL, 0x0150 )
|
|
#define SCARD_ATTR_CURRENT_PROTOCOL_TYPE \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_IFD_PROTOCOL, 0x0201 )
|
|
#define SCARD_ATTR_CURRENT_CLK \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_IFD_PROTOCOL, 0x0202 )
|
|
#define SCARD_ATTR_CURRENT_F \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_IFD_PROTOCOL, 0x0203 )
|
|
#define SCARD_ATTR_CURRENT_D \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_IFD_PROTOCOL, 0x0204 )
|
|
#define SCARD_ATTR_CURRENT_N \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_IFD_PROTOCOL, 0x0205 )
|
|
#define SCARD_ATTR_CURRENT_W \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_IFD_PROTOCOL, 0x0206 )
|
|
#define SCARD_ATTR_CURRENT_IFSC \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_IFD_PROTOCOL, 0x0207 )
|
|
#define SCARD_ATTR_CURRENT_IFSD \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_IFD_PROTOCOL, 0x0208 )
|
|
#define SCARD_ATTR_CURRENT_BWT \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_IFD_PROTOCOL, 0x0209 )
|
|
#define SCARD_ATTR_CURRENT_CWT \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_IFD_PROTOCOL, 0x020A )
|
|
#define SCARD_ATTR_CURRENT_EBC_ENCODING \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_IFD_PROTOCOL, 0x020B )
|
|
#define SCARD_ATTR_EXTENDED_BWT \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_IFD_PROTOCOL, 0x020C )
|
|
#define SCARD_ATTR_ICC_PRESENCE \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_ICC_STATE, 0x0300 )
|
|
#define SCARD_ATTR_ICC_INTERFACE_STATUS \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_ICC_STATE, 0x0301 )
|
|
#define SCARD_ATTR_CURRENT_IO_STATE \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_ICC_STATE, 0x0302 )
|
|
#define SCARD_ATTR_ATR_STRING \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_ICC_STATE, 0x0303 )
|
|
#define SCARD_ATTR_ICC_TYPE_PER_ATR \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_ICC_STATE, 0x0304 )
|
|
#define SCARD_ATTR_ESC_RESET \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_VENDOR_DEFINED, 0xA000 )
|
|
#define SCARD_ATTR_ESC_CANCEL \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_VENDOR_DEFINED, 0xA003 )
|
|
#define SCARD_ATTR_ESC_AUTHREQUEST \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_VENDOR_DEFINED, 0xA005 )
|
|
#define SCARD_ATTR_MAXINPUT \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_VENDOR_DEFINED, 0xA007 )
|
|
#define SCARD_ATTR_DEVICE_UNIT \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_SYSTEM, 0x0001 )
|
|
#define SCARD_ATTR_DEVICE_IN_USE \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_SYSTEM, 0x0002 )
|
|
#define SCARD_ATTR_DEVICE_FRIENDLY_NAME_A \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_SYSTEM, 0x0003 )
|
|
#define SCARD_ATTR_DEVICE_SYSTEM_NAME_A \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_SYSTEM, 0x0004 )
|
|
#define SCARD_ATTR_DEVICE_FRIENDLY_NAME_W \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_SYSTEM, 0x0005 )
|
|
#define SCARD_ATTR_DEVICE_SYSTEM_NAME_W \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_SYSTEM, 0x0006 )
|
|
#define SCARD_ATTR_SUPRESS_T1_IFS_REQUEST \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_SYSTEM, 0x0007 )
|
|
#define SCARD_PERF_NUM_TRANSMISSIONS \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_PERF, 0x0001 )
|
|
#define SCARD_PERF_BYTES_TRANSMITTED \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_PERF, 0x0002 )
|
|
#define SCARD_PERF_TRANSMISSION_TIME \
|
|
SCARD_ATTR_VALUE( SCARD_CLASS_PERF, 0x0003 )
|
|
#ifdef UNICODE
|
|
#define SCARD_ATTR_DEVICE_FRIENDLY_NAME SCARD_ATTR_DEVICE_FRIENDLY_NAME_W
|
|
#define SCARD_ATTR_DEVICE_SYSTEM_NAME SCARD_ATTR_DEVICE_SYSTEM_NAME_W
|
|
#else
|
|
#define SCARD_ATTR_DEVICE_FRIENDLY_NAME SCARD_ATTR_DEVICE_FRIENDLY_NAME_A
|
|
#define SCARD_ATTR_DEVICE_SYSTEM_NAME SCARD_ATTR_DEVICE_SYSTEM_NAME_A
|
|
#endif
|
|
|
|
/* T0 protocol constants */
|
|
#define SCARD_T0_HEADER_LENGTH 7
|
|
#define SCARD_T0_CMD_LENGTH 5
|
|
|
|
/* T1 protocol constants */
|
|
#define SCARD_T1_PROLOGUE_LENGTH 3
|
|
#define SCARD_T1_EPILOGUE_LENGTH 2
|
|
#define SCARD_T1_MAX_IFS 254
|
|
|
|
/* Smart card reader states */
|
|
#define SCARD_UNKNOWN 0L
|
|
#define SCARD_ABSENT 1L
|
|
#define SCARD_PRESENT 2L
|
|
#define SCARD_SWALLOWED 3L
|
|
#define SCARD_POWERED 4L
|
|
#define SCARD_NEGOTIABLE 5L
|
|
#define SCARD_SPECIFIC 6L
|
|
|
|
/* Smart card reader flags */
|
|
#define SCARD_READER_SWALLOWS 0x00000001L
|
|
#define SCARD_READER_EJECTS 0x00000002L
|
|
#define SCARD_READER_CONFISCATES 0x00000004L
|
|
|
|
/* Smart card reader types */
|
|
#define SCARD_READER_TYPE_SERIAL 0x00000001L
|
|
#define SCARD_READER_TYPE_PARALLEL 0x00000002L
|
|
#define SCARD_READER_TYPE_KEYBOARD 0x00000004L
|
|
#define SCARD_READER_TYPE_SCSI 0x00000008L
|
|
#define SCARD_READER_TYPE_IDE 0x00000010L
|
|
#define SCARD_READER_TYPE_USB 0x00000020L
|
|
#define SCARD_READER_TYPE_PCMCIA 0x00000040L
|
|
#define SCARD_READER_TYPE_VENDOR 0x000000F0L
|
|
|
|
/* Smart card I/O request */
|
|
typedef struct _SCARD_IO_REQUEST {
|
|
DWORD dwProtocol;
|
|
DWORD cbPciLength;
|
|
} SCARD_IO_REQUEST;
|
|
typedef SCARD_IO_REQUEST *PSCARD_IO_REQUEST;
|
|
typedef SCARD_IO_REQUEST *LPSCARD_IO_REQUEST;
|
|
typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST;
|
|
|
|
/* T0 command */
|
|
typedef struct {
|
|
BYTE bCla;
|
|
BYTE bIns;
|
|
BYTE bP1;
|
|
BYTE bP2;
|
|
BYTE bP3;
|
|
} SCARD_T0_COMMAND;
|
|
typedef SCARD_T0_COMMAND *PSCARD_T0_COMMAND;
|
|
|
|
/* T0 request */
|
|
typedef struct {
|
|
SCARD_IO_REQUEST ioRequest;
|
|
BYTE bSw1;
|
|
BYTE bSw2;
|
|
union {
|
|
SCARD_T0_COMMAND CmdBytes;
|
|
BYTE rgbHeader[5];
|
|
};
|
|
} SCARD_T0_REQUEST;
|
|
typedef SCARD_T0_REQUEST *PSCARD_T0_REQUEST;
|
|
typedef SCARD_T0_REQUEST *LPSCARD_T0_REQUEST;
|
|
|
|
/* T1 request */
|
|
typedef struct {
|
|
SCARD_IO_REQUEST ioRequest;
|
|
} SCARD_T1_REQUEST;
|
|
typedef SCARD_T1_REQUEST *PSCARD_T1_REQUEST;
|
|
typedef SCARD_T1_REQUEST *LPSCARD_T1_REQUEST;
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#endif /* _NTDDSCRD_H2_ */
|