FreeRDP
smartcard_pcsc.h File Reference
#include <winpr/platform.h>
#include <winpr/smartcard.h>
This graph shows which files directly or indirectly include this file:

Data Structures

struct  PCSC_SCARD_READERSTATE
 
struct  PCSC_SCARD_IO_REQUEST
 
struct  PCSC_TLV_STRUCTURE
 
struct  PCSCFunctionTable
 

Macros

#define PCSC_SCARD_UNKNOWN   0x0001
 
#define PCSC_SCARD_ABSENT   0x0002
 
#define PCSC_SCARD_PRESENT   0x0004
 
#define PCSC_SCARD_SWALLOWED   0x0008
 
#define PCSC_SCARD_POWERED   0x0010
 
#define PCSC_SCARD_NEGOTIABLE   0x0020
 
#define PCSC_SCARD_SPECIFIC   0x0040
 
#define PCSC_SCARD_PROTOCOL_RAW   0x00000004
 
#define PCSC_SCARD_PROTOCOL_T15   0x00000008
 
#define PCSC_MAX_BUFFER_SIZE   264
 
#define PCSC_MAX_BUFFER_SIZE_EXTENDED   (4 + 3 + (1 << 16) + 3 + 2)
 
#define PCSC_MAX_ATR_SIZE   33
 
#define PCSC_SCARD_AUTOALLOCATE   (PCSC_DWORD)(-1)
 
#define PCSC_SCARD_PCI_T0   (&g_PCSC_rgSCardT0Pci)
 
#define PCSC_SCARD_PCI_T1   (&g_PCSC_rgSCardT1Pci)
 
#define PCSC_SCARD_PCI_RAW   (&g_PCSC_rgSCardRawPci)
 
#define PCSC_SCARD_CTL_CODE(code)   (0x42000000 + (code))
 
#define PCSC_CM_IOCTL_GET_FEATURE_REQUEST   PCSC_SCARD_CTL_CODE(3400)
 

Typedefs

typedef unsigned long PCSC_DWORD
 
typedef PCSC_DWORDPCSC_PDWORD
 
typedef PCSC_DWORDPCSC_LPDWORD
 
typedef unsigned long PCSC_ULONG
 
typedef PCSC_ULONGPCSC_PULONG
 
typedef long PCSC_LONG
 

Functions

int PCSC_InitializeSCardApi (void)
 
PSCardApiFunctionTable PCSC_GetSCardApiFunctionTable (void)
 

Macro Definition Documentation

#define PCSC_CM_IOCTL_GET_FEATURE_REQUEST   PCSC_SCARD_CTL_CODE(3400)
#define PCSC_MAX_ATR_SIZE   33
#define PCSC_MAX_BUFFER_SIZE   264
#define PCSC_MAX_BUFFER_SIZE_EXTENDED   (4 + 3 + (1 << 16) + 3 + 2)
#define PCSC_SCARD_ABSENT   0x0002
#define PCSC_SCARD_AUTOALLOCATE   (PCSC_DWORD)(-1)
#define PCSC_SCARD_CTL_CODE (   code)    (0x42000000 + (code))
#define PCSC_SCARD_NEGOTIABLE   0x0020
#define PCSC_SCARD_PCI_RAW   (&g_PCSC_rgSCardRawPci)
#define PCSC_SCARD_PCI_T0   (&g_PCSC_rgSCardT0Pci)
#define PCSC_SCARD_PCI_T1   (&g_PCSC_rgSCardT1Pci)
#define PCSC_SCARD_POWERED   0x0010
#define PCSC_SCARD_PRESENT   0x0004
#define PCSC_SCARD_PROTOCOL_RAW   0x00000004
#define PCSC_SCARD_PROTOCOL_T15   0x00000008
#define PCSC_SCARD_SPECIFIC   0x0040
#define PCSC_SCARD_SWALLOWED   0x0008
#define PCSC_SCARD_UNKNOWN   0x0001

Typedef Documentation

typedef unsigned long PCSC_DWORD

WinPR: Windows Portable Runtime Smart Card API

Copyright 2014 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. On Windows, DWORD and ULONG are defined to unsigned long. However, 64-bit Windows uses the LLP64 model which defines unsigned long as a 4-byte type, while most non-Windows systems use the LP64 model where unsigned long is 8 bytes.

WinPR correctly defines DWORD and ULONG to be 4-byte types regardless of LLP64/LP64, but this has the side effect of breaking compatibility with the broken pcsc-lite types.

To make matters worse, pcsc-lite correctly defines the data types on OS X, but not on other platforms.

typedef long PCSC_LONG
typedef unsigned long PCSC_ULONG

Function Documentation

PSCardApiFunctionTable PCSC_GetSCardApiFunctionTable ( void  )

Here is the caller graph for this function:

int PCSC_InitializeSCardApi ( void  )

Here is the call graph for this function:

Here is the caller graph for this function: