/* * 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_ */