Blame winpr/include/winpr/smartcard.h

Packit 1fb8d4
/**
Packit 1fb8d4
 * WinPR: Windows Portable Runtime
Packit 1fb8d4
 * Smart Card API
Packit 1fb8d4
 *
Packit 1fb8d4
 * Copyright 2014 Marc-Andre Moreau <marcandre.moreau@gmail.com>
Packit Service 5a9772
 * Copyright 2020 Armin Novak <armin.novak@thincast.com>
Packit Service 5a9772
 * Copyright 2020 Thincast Technologies GmbH
Packit 1fb8d4
 *
Packit 1fb8d4
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit 1fb8d4
 * you may not use this file except in compliance with the License.
Packit 1fb8d4
 * You may obtain a copy of the License at
Packit 1fb8d4
 *
Packit 1fb8d4
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit 1fb8d4
 *
Packit 1fb8d4
 * Unless required by applicable law or agreed to in writing, software
Packit 1fb8d4
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit 1fb8d4
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 1fb8d4
 * See the License for the specific language governing permissions and
Packit 1fb8d4
 * limitations under the License.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#ifndef WINPR_SMARTCARD_H
Packit 1fb8d4
#define WINPR_SMARTCARD_H
Packit 1fb8d4
Packit 1fb8d4
#include <winpr/winpr.h>
Packit 1fb8d4
#include <winpr/wtypes.h>
Packit 1fb8d4
Packit 1fb8d4
#include <winpr/io.h>
Packit 1fb8d4
#include <winpr/error.h>
Packit 1fb8d4
Packit 1fb8d4
#ifndef _WINSCARD_H_
Packit Service 5a9772
#define _WINSCARD_H_ /* do not include winscard.h */
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#ifndef SCARD_S_SUCCESS
Packit 1fb8d4
Packit Service 5a9772
#define SCARD_S_SUCCESS NO_ERROR
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_F_INTERNAL_ERROR (HRESULT)(0x80100001L)
Packit Service 5a9772
#define SCARD_E_CANCELLED (HRESULT)(0x80100002L)
Packit Service 5a9772
#define SCARD_E_INVALID_HANDLE (HRESULT)(0x80100003L)
Packit Service 5a9772
#define SCARD_E_INVALID_PARAMETER (HRESULT)(0x80100004L)
Packit Service 5a9772
#define SCARD_E_INVALID_TARGET (HRESULT)(0x80100005L)
Packit Service 5a9772
#define SCARD_E_NO_MEMORY (HRESULT)(0x80100006L)
Packit Service 5a9772
#define SCARD_F_WAITED_TOO_LONG (HRESULT)(0x80100007L)
Packit Service 5a9772
#define SCARD_E_INSUFFICIENT_BUFFER (HRESULT)(0x80100008L)
Packit Service 5a9772
#define SCARD_E_UNKNOWN_READER (HRESULT)(0x80100009L)
Packit Service 5a9772
#define SCARD_E_TIMEOUT (HRESULT)(0x8010000AL)
Packit Service 5a9772
#define SCARD_E_SHARING_VIOLATION (HRESULT)(0x8010000BL)
Packit Service 5a9772
#define SCARD_E_NO_SMARTCARD (HRESULT)(0x8010000CL)
Packit Service 5a9772
#define SCARD_E_UNKNOWN_CARD (HRESULT)(0x8010000DL)
Packit Service 5a9772
#define SCARD_E_CANT_DISPOSE (HRESULT)(0x8010000EL)
Packit Service 5a9772
#define SCARD_E_PROTO_MISMATCH (HRESULT)(0x8010000FL)
Packit Service 5a9772
#define SCARD_E_NOT_READY (HRESULT)(0x80100010L)
Packit Service 5a9772
#define SCARD_E_INVALID_VALUE (HRESULT)(0x80100011L)
Packit Service 5a9772
#define SCARD_E_SYSTEM_CANCELLED (HRESULT)(0x80100012L)
Packit Service 5a9772
#define SCARD_F_COMM_ERROR (HRESULT)(0x80100013L)
Packit Service 5a9772
#define SCARD_F_UNKNOWN_ERROR (HRESULT)(0x80100014L)
Packit Service 5a9772
#define SCARD_E_INVALID_ATR (HRESULT)(0x80100015L)
Packit Service 5a9772
#define SCARD_E_NOT_TRANSACTED (HRESULT)(0x80100016L)
Packit Service 5a9772
#define SCARD_E_READER_UNAVAILABLE (HRESULT)(0x80100017L)
Packit Service 5a9772
#define SCARD_P_SHUTDOWN (HRESULT)(0x80100018L)
Packit Service 5a9772
#define SCARD_E_PCI_TOO_SMALL (HRESULT)(0x80100019L)
Packit Service 5a9772
#define SCARD_E_READER_UNSUPPORTED (HRESULT)(0x8010001AL)
Packit Service 5a9772
#define SCARD_E_DUPLICATE_READER (HRESULT)(0x8010001BL)
Packit Service 5a9772
#define SCARD_E_CARD_UNSUPPORTED (HRESULT)(0x8010001CL)
Packit Service 5a9772
#define SCARD_E_NO_SERVICE (HRESULT)(0x8010001DL)
Packit Service 5a9772
#define SCARD_E_SERVICE_STOPPED (HRESULT)(0x8010001EL)
Packit Service 5a9772
#define SCARD_E_UNEXPECTED (HRESULT)(0x8010001FL)
Packit Service 5a9772
#define SCARD_E_ICC_INSTALLATION (HRESULT)(0x80100020L)
Packit Service 5a9772
#define SCARD_E_ICC_CREATEORDER (HRESULT)(0x80100021L)
Packit Service 5a9772
#define SCARD_E_UNSUPPORTED_FEATURE (HRESULT)(0x80100022L)
Packit Service 5a9772
#define SCARD_E_DIR_NOT_FOUND (HRESULT)(0x80100023L)
Packit Service 5a9772
#define SCARD_E_FILE_NOT_FOUND (HRESULT)(0x80100024L)
Packit Service 5a9772
#define SCARD_E_NO_DIR (HRESULT)(0x80100025L)
Packit Service 5a9772
#define SCARD_E_NO_FILE (HRESULT)(0x80100026L)
Packit Service 5a9772
#define SCARD_E_NO_ACCESS (HRESULT)(0x80100027L)
Packit Service 5a9772
#define SCARD_E_WRITE_TOO_MANY (HRESULT)(0x80100028L)
Packit Service 5a9772
#define SCARD_E_BAD_SEEK (HRESULT)(0x80100029L)
Packit Service 5a9772
#define SCARD_E_INVALID_CHV (HRESULT)(0x8010002AL)
Packit Service 5a9772
#define SCARD_E_UNKNOWN_RES_MNG (HRESULT)(0x8010002BL)
Packit Service 5a9772
#define SCARD_E_NO_SUCH_CERTIFICATE (HRESULT)(0x8010002CL)
Packit Service 5a9772
#define SCARD_E_CERTIFICATE_UNAVAILABLE (HRESULT)(0x8010002DL)
Packit Service 5a9772
#define SCARD_E_NO_READERS_AVAILABLE (HRESULT)(0x8010002EL)
Packit Service 5a9772
#define SCARD_E_COMM_DATA_LOST (HRESULT)(0x8010002FL)
Packit Service 5a9772
#define SCARD_E_NO_KEY_CONTAINER (HRESULT)(0x80100030L)
Packit Service 5a9772
#define SCARD_E_SERVER_TOO_BUSY (HRESULT)(0x80100031L)
Packit Service 5a9772
#define SCARD_E_PIN_CACHE_EXPIRED (HRESULT)(0x80100032L)
Packit Service 5a9772
#define SCARD_E_NO_PIN_CACHE (HRESULT)(0x80100033L)
Packit Service 5a9772
#define SCARD_E_READ_ONLY_CARD (HRESULT)(0x80100034L)
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_W_UNSUPPORTED_CARD (HRESULT)(0x80100065L)
Packit Service 5a9772
#define SCARD_W_UNRESPONSIVE_CARD (HRESULT)(0x80100066L)
Packit Service 5a9772
#define SCARD_W_UNPOWERED_CARD (HRESULT)(0x80100067L)
Packit Service 5a9772
#define SCARD_W_RESET_CARD (HRESULT)(0x80100068L)
Packit Service 5a9772
#define SCARD_W_REMOVED_CARD (HRESULT)(0x80100069L)
Packit Service 5a9772
#define SCARD_W_SECURITY_VIOLATION (HRESULT)(0x8010006AL)
Packit Service 5a9772
#define SCARD_W_WRONG_CHV (HRESULT)(0x8010006BL)
Packit Service 5a9772
#define SCARD_W_CHV_BLOCKED (HRESULT)(0x8010006CL)
Packit Service 5a9772
#define SCARD_W_EOF (HRESULT)(0x8010006DL)
Packit Service 5a9772
#define SCARD_W_CANCELLED_BY_USER (HRESULT)(0x8010006EL)
Packit Service 5a9772
#define SCARD_W_CARD_NOT_AUTHENTICATED (HRESULT)(0x8010006FL)
Packit Service 5a9772
#define SCARD_W_CACHE_ITEM_NOT_FOUND (HRESULT)(0x80100070L)
Packit Service 5a9772
#define SCARD_W_CACHE_ITEM_STALE (HRESULT)(0x80100071L)
Packit Service 5a9772
#define SCARD_W_CACHE_ITEM_TOO_BIG (HRESULT)(0x80100072L)
Packit 1fb8d4
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
#define SCARD_ATR_LENGTH 33
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_PROTOCOL_UNDEFINED 0x00000000u
Packit Service 5a9772
#define SCARD_PROTOCOL_T0 0x00000001u
Packit Service 5a9772
#define SCARD_PROTOCOL_T1 0x00000002u
Packit Service 5a9772
#define SCARD_PROTOCOL_RAW 0x00010000u
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_PROTOCOL_Tx (SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1)
Packit Service 5a9772
#define SCARD_PROTOCOL_DEFAULT 0x80000000u
Packit Service 5a9772
#define SCARD_PROTOCOL_OPTIMAL 0x00000000u
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_POWER_DOWN 0
Packit Service 5a9772
#define SCARD_COLD_RESET 1
Packit Service 5a9772
#define SCARD_WARM_RESET 2
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_CTL_CODE(code) \
Packit Service 5a9772
	CTL_CODE(FILE_DEVICE_SMARTCARD, (code), METHOD_BUFFERED, FILE_ANY_ACCESS)
Packit Service 5a9772
Packit Service 5a9772
#define IOCTL_SMARTCARD_POWER SCARD_CTL_CODE(1)
Packit Service 5a9772
#define IOCTL_SMARTCARD_GET_ATTRIBUTE SCARD_CTL_CODE(2)
Packit Service 5a9772
#define IOCTL_SMARTCARD_SET_ATTRIBUTE SCARD_CTL_CODE(3)
Packit Service 5a9772
#define IOCTL_SMARTCARD_CONFISCATE SCARD_CTL_CODE(4)
Packit Service 5a9772
#define IOCTL_SMARTCARD_TRANSMIT SCARD_CTL_CODE(5)
Packit Service 5a9772
#define IOCTL_SMARTCARD_EJECT SCARD_CTL_CODE(6)
Packit Service 5a9772
#define IOCTL_SMARTCARD_SWALLOW SCARD_CTL_CODE(7)
Packit Service 5a9772
#define IOCTL_SMARTCARD_IS_PRESENT SCARD_CTL_CODE(10)
Packit Service 5a9772
#define IOCTL_SMARTCARD_IS_ABSENT SCARD_CTL_CODE(11)
Packit Service 5a9772
#define IOCTL_SMARTCARD_SET_PROTOCOL SCARD_CTL_CODE(12)
Packit Service 5a9772
#define IOCTL_SMARTCARD_GET_STATE SCARD_CTL_CODE(14)
Packit Service 5a9772
#define IOCTL_SMARTCARD_GET_LAST_ERROR SCARD_CTL_CODE(15)
Packit Service 5a9772
#define IOCTL_SMARTCARD_GET_PERF_CNTR SCARD_CTL_CODE(16)
Packit Service 5a9772
Packit Service 5a9772
#define IOCTL_SMARTCARD_GET_FEATURE_REQUEST SCARD_CTL_CODE(3400)
Packit Service 5a9772
Packit Service 5a9772
#define MAXIMUM_ATTR_STRING_LENGTH 32
Packit Service 5a9772
#define MAXIMUM_SMARTCARD_READERS 10
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_ATTR_VALUE(Class, Tag) ((((ULONG)(Class)) << 16) | ((ULONG)(Tag)))
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_CLASS_VENDOR_INFO 1
Packit Service 5a9772
#define SCARD_CLASS_COMMUNICATIONS 2
Packit Service 5a9772
#define SCARD_CLASS_PROTOCOL 3
Packit Service 5a9772
#define SCARD_CLASS_POWER_MGMT 4
Packit Service 5a9772
#define SCARD_CLASS_SECURITY 5
Packit Service 5a9772
#define SCARD_CLASS_MECHANICAL 6
Packit Service 5a9772
#define SCARD_CLASS_VENDOR_DEFINED 7
Packit Service 5a9772
#define SCARD_CLASS_IFD_PROTOCOL 8
Packit Service 5a9772
#define SCARD_CLASS_ICC_STATE 9
Packit Service 5a9772
#define SCARD_CLASS_PERF 0x7FFE
Packit Service 5a9772
#define SCARD_CLASS_SYSTEM 0x7FFF
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_ATTR_VENDOR_NAME SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0100)
Packit Service 5a9772
#define SCARD_ATTR_VENDOR_IFD_TYPE SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0101)
Packit Service 5a9772
#define SCARD_ATTR_VENDOR_IFD_VERSION SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0102)
Packit Service 5a9772
#define SCARD_ATTR_VENDOR_IFD_SERIAL_NO SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO, 0x0103)
Packit Service 5a9772
#define SCARD_ATTR_CHANNEL_ID SCARD_ATTR_VALUE(SCARD_CLASS_COMMUNICATIONS, 0x0110)
Packit Service 5a9772
#define SCARD_ATTR_PROTOCOL_TYPES SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0120)
Packit Service 5a9772
#define SCARD_ATTR_DEFAULT_CLK SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0121)
Packit Service 5a9772
#define SCARD_ATTR_MAX_CLK SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0122)
Packit Service 5a9772
#define SCARD_ATTR_DEFAULT_DATA_RATE SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0123)
Packit Service 5a9772
#define SCARD_ATTR_MAX_DATA_RATE SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0124)
Packit Service 5a9772
#define SCARD_ATTR_MAX_IFSD SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL, 0x0125)
Packit Service 5a9772
#define SCARD_ATTR_POWER_MGMT_SUPPORT SCARD_ATTR_VALUE(SCARD_CLASS_POWER_MGMT, 0x0131)
Packit Service 5a9772
#define SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY, 0x0140)
Packit Service 5a9772
#define SCARD_ATTR_USER_AUTH_INPUT_DEVICE SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY, 0x0142)
Packit Service 5a9772
#define SCARD_ATTR_CHARACTERISTICS SCARD_ATTR_VALUE(SCARD_CLASS_MECHANICAL, 0x0150)
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_ATTR_CURRENT_PROTOCOL_TYPE SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0201)
Packit Service 5a9772
#define SCARD_ATTR_CURRENT_CLK SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0202)
Packit Service 5a9772
#define SCARD_ATTR_CURRENT_F SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0203)
Packit Service 5a9772
#define SCARD_ATTR_CURRENT_D SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0204)
Packit Service 5a9772
#define SCARD_ATTR_CURRENT_N SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0205)
Packit Service 5a9772
#define SCARD_ATTR_CURRENT_W SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0206)
Packit Service 5a9772
#define SCARD_ATTR_CURRENT_IFSC SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0207)
Packit Service 5a9772
#define SCARD_ATTR_CURRENT_IFSD SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0208)
Packit Service 5a9772
#define SCARD_ATTR_CURRENT_BWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x0209)
Packit Service 5a9772
#define SCARD_ATTR_CURRENT_CWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020a)
Packit Service 5a9772
#define SCARD_ATTR_CURRENT_EBC_ENCODING SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020b)
Packit Service 5a9772
#define SCARD_ATTR_EXTENDED_BWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL, 0x020c)
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_ATTR_ICC_PRESENCE SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0300)
Packit Service 5a9772
#define SCARD_ATTR_ICC_INTERFACE_STATUS SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0301)
Packit Service 5a9772
#define SCARD_ATTR_CURRENT_IO_STATE SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0302)
Packit Service 5a9772
#define SCARD_ATTR_ATR_STRING SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0303)
Packit Service 5a9772
#define SCARD_ATTR_ICC_TYPE_PER_ATR SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE, 0x0304)
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_ATTR_ESC_RESET SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA000)
Packit Service 5a9772
#define SCARD_ATTR_ESC_CANCEL SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA003)
Packit Service 5a9772
#define SCARD_ATTR_ESC_AUTHREQUEST SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA005)
Packit Service 5a9772
#define SCARD_ATTR_MAXINPUT SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED, 0xA007)
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_ATTR_DEVICE_UNIT SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0001)
Packit Service 5a9772
#define SCARD_ATTR_DEVICE_IN_USE SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0002)
Packit Service 5a9772
#define SCARD_ATTR_DEVICE_FRIENDLY_NAME_A SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0003)
Packit Service 5a9772
#define SCARD_ATTR_DEVICE_SYSTEM_NAME_A SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0004)
Packit Service 5a9772
#define SCARD_ATTR_DEVICE_FRIENDLY_NAME_W SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0005)
Packit Service 5a9772
#define SCARD_ATTR_DEVICE_SYSTEM_NAME_W SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0006)
Packit Service 5a9772
#define SCARD_ATTR_SUPRESS_T1_IFS_REQUEST SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM, 0x0007)
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_PERF_NUM_TRANSMISSIONS SCARD_ATTR_VALUE(SCARD_CLASS_PERF, 0x0001)
Packit Service 5a9772
#define SCARD_PERF_BYTES_TRANSMITTED SCARD_ATTR_VALUE(SCARD_CLASS_PERF, 0x0002)
Packit Service 5a9772
#define SCARD_PERF_TRANSMISSION_TIME SCARD_ATTR_VALUE(SCARD_CLASS_PERF, 0x0003)
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit Service 5a9772
#define SCARD_ATTR_DEVICE_FRIENDLY_NAME SCARD_ATTR_DEVICE_FRIENDLY_NAME_W
Packit Service 5a9772
#define SCARD_ATTR_DEVICE_SYSTEM_NAME SCARD_ATTR_DEVICE_SYSTEM_NAME_W
Packit 1fb8d4
#else
Packit Service 5a9772
#define SCARD_ATTR_DEVICE_FRIENDLY_NAME SCARD_ATTR_DEVICE_FRIENDLY_NAME_A
Packit Service 5a9772
#define SCARD_ATTR_DEVICE_SYSTEM_NAME SCARD_ATTR_DEVICE_SYSTEM_NAME_A
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
#define SCARD_T0_HEADER_LENGTH 7
Packit Service 5a9772
#define SCARD_T0_CMD_LENGTH 5
Packit 1fb8d4
Packit Service 5a9772
#define SCARD_T1_PROLOGUE_LENGTH 3
Packit Service 5a9772
#define SCARD_T1_EPILOGUE_LENGTH 2
Packit Service 5a9772
#define SCARD_T1_MAX_IFS 254
Packit 1fb8d4
Packit Service 5a9772
#define SCARD_UNKNOWN 0
Packit Service 5a9772
#define SCARD_ABSENT 1
Packit Service 5a9772
#define SCARD_PRESENT 2
Packit Service 5a9772
#define SCARD_SWALLOWED 3
Packit Service 5a9772
#define SCARD_POWERED 4
Packit Service 5a9772
#define SCARD_NEGOTIABLE 5
Packit Service 5a9772
#define SCARD_SPECIFIC 6
Packit 1fb8d4
Packit 1fb8d4
#pragma pack(push, 1)
Packit 1fb8d4
Packit 1fb8d4
typedef struct _SCARD_IO_REQUEST
Packit 1fb8d4
{
Packit 1fb8d4
	DWORD dwProtocol;
Packit 1fb8d4
	DWORD cbPciLength;
Packit 1fb8d4
} SCARD_IO_REQUEST, *PSCARD_IO_REQUEST, *LPSCARD_IO_REQUEST;
Packit 1fb8d4
typedef const SCARD_IO_REQUEST* LPCSCARD_IO_REQUEST;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit Service 5a9772
	BYTE bCla, bIns, bP1, bP2, bP3;
Packit 1fb8d4
} SCARD_T0_COMMAND, *LPSCARD_T0_COMMAND;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	SCARD_IO_REQUEST ioRequest;
Packit Service 5a9772
	BYTE bSw1, bSw2;
Packit Service 5a9772
	union {
Packit 1fb8d4
		SCARD_T0_COMMAND CmdBytes;
Packit 1fb8d4
		BYTE rgbHeader[5];
Packit 1fb8d4
	} DUMMYUNIONNAME;
Packit 1fb8d4
} SCARD_T0_REQUEST;
Packit 1fb8d4
Packit Service 5a9772
typedef SCARD_T0_REQUEST *PSCARD_T0_REQUEST, *LPSCARD_T0_REQUEST;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	SCARD_IO_REQUEST ioRequest;
Packit 1fb8d4
} SCARD_T1_REQUEST;
Packit Service 5a9772
typedef SCARD_T1_REQUEST *PSCARD_T1_REQUEST, *LPSCARD_T1_REQUEST;
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_READER_SWALLOWS 0x00000001
Packit Service 5a9772
#define SCARD_READER_EJECTS 0x00000002
Packit Service 5a9772
#define SCARD_READER_CONFISCATES 0x00000004
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_READER_TYPE_SERIAL 0x01
Packit Service 5a9772
#define SCARD_READER_TYPE_PARALELL 0x02
Packit Service 5a9772
#define SCARD_READER_TYPE_KEYBOARD 0x04
Packit Service 5a9772
#define SCARD_READER_TYPE_SCSI 0x08
Packit Service 5a9772
#define SCARD_READER_TYPE_IDE 0x10
Packit Service 5a9772
#define SCARD_READER_TYPE_USB 0x20
Packit Service 5a9772
#define SCARD_READER_TYPE_PCMCIA 0x40
Packit Service 5a9772
#define SCARD_READER_TYPE_TPM 0x80
Packit Service 5a9772
#define SCARD_READER_TYPE_NFC 0x100
Packit Service 5a9772
#define SCARD_READER_TYPE_UICC 0x200
Packit Service 5a9772
#define SCARD_READER_TYPE_VENDOR 0xF0
Packit 1fb8d4
Packit 1fb8d4
#ifndef WINSCARDAPI
Packit Service 5a9772
#define WINSCARDAPI WINPR_API
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
typedef ULONG_PTR SCARDCONTEXT;
Packit Service 5a9772
typedef SCARDCONTEXT *PSCARDCONTEXT, *LPSCARDCONTEXT;
Packit 1fb8d4
Packit 1fb8d4
typedef ULONG_PTR SCARDHANDLE;
Packit Service 5a9772
typedef SCARDHANDLE *PSCARDHANDLE, *LPSCARDHANDLE;
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_AUTOALLOCATE (DWORD)(-1)
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_SCOPE_USER 0
Packit Service 5a9772
#define SCARD_SCOPE_TERMINAL 1
Packit Service 5a9772
#define SCARD_SCOPE_SYSTEM 2
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_STATE_UNAWARE 0x00000000
Packit Service 5a9772
#define SCARD_STATE_IGNORE 0x00000001
Packit Service 5a9772
#define SCARD_STATE_CHANGED 0x00000002
Packit Service 5a9772
#define SCARD_STATE_UNKNOWN 0x00000004
Packit Service 5a9772
#define SCARD_STATE_UNAVAILABLE 0x00000008
Packit Service 5a9772
#define SCARD_STATE_EMPTY 0x00000010
Packit Service 5a9772
#define SCARD_STATE_PRESENT 0x00000020
Packit Service 5a9772
#define SCARD_STATE_ATRMATCH 0x00000040
Packit Service 5a9772
#define SCARD_STATE_EXCLUSIVE 0x00000080
Packit Service 5a9772
#define SCARD_STATE_INUSE 0x00000100
Packit Service 5a9772
#define SCARD_STATE_MUTE 0x00000200
Packit Service 5a9772
#define SCARD_STATE_UNPOWERED 0x00000400
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_SHARE_EXCLUSIVE 1
Packit Service 5a9772
#define SCARD_SHARE_SHARED 2
Packit Service 5a9772
#define SCARD_SHARE_DIRECT 3
Packit Service 5a9772
Packit Service 5a9772
#define SCARD_LEAVE_CARD 0
Packit Service 5a9772
#define SCARD_RESET_CARD 1
Packit Service 5a9772
#define SCARD_UNPOWER_CARD 2
Packit Service 5a9772
#define SCARD_EJECT_CARD 3
Packit Service 5a9772
Packit Service 5a9772
#define SC_DLG_MINIMAL_UI 0x01
Packit Service 5a9772
#define SC_DLG_NO_UI 0x02
Packit Service 5a9772
#define SC_DLG_FORCE_UI 0x04
Packit Service 5a9772
Packit Service 5a9772
#define SCERR_NOCARDNAME 0x4000
Packit Service 5a9772
#define SCERR_NOGUIDS 0x8000
Packit 1fb8d4
Packit 1fb8d4
typedef SCARDHANDLE(WINAPI* LPOCNCONNPROCA)(SCARDCONTEXT hSCardContext, LPSTR szReader,
Packit Service 5a9772
                                            LPSTR mszCards, PVOID pvUserData);
Packit 1fb8d4
typedef SCARDHANDLE(WINAPI* LPOCNCONNPROCW)(SCARDCONTEXT hSCardContext, LPWSTR szReader,
Packit Service 5a9772
                                            LPWSTR mszCards, PVOID pvUserData);
Packit 1fb8d4
Packit Service 5a9772
typedef BOOL(WINAPI* LPOCNCHKPROC)(SCARDCONTEXT hSCardContext, SCARDHANDLE hCard, PVOID pvUserData);
Packit Service 5a9772
typedef void(WINAPI* LPOCNDSCPROC)(SCARDCONTEXT hSCardContext, SCARDHANDLE hCard, PVOID pvUserData);
Packit 1fb8d4
Packit Service 5a9772
#define SCARD_READER_SEL_AUTH_PACKAGE ((DWORD)-629)
Packit 1fb8d4
Packit Service 5a9772
#define SCARD_AUDIT_CHV_FAILURE 0x0
Packit Service 5a9772
#define SCARD_AUDIT_CHV_SUCCESS 0x1
Packit 1fb8d4
Packit 1fb8d4
#define SCardListCardTypes SCardListCards
Packit 1fb8d4
Packit Service 5a9772
#define PCSCardIntroduceCardType(hContext, szCardName, pbAtr, pbAtrMask, cbAtrLen,         \
Packit Service 5a9772
                                 pguidPrimaryProvider, rgguidInterfaces, dwInterfaceCount) \
Packit Service 5a9772
	SCardIntroduceCardType(hContext, szCardName, pguidPrimaryProvider, rgguidInterfaces,   \
Packit Service 5a9772
	                       dwInterfaceCount, pbAtr, pbAtrMask, cbAtrLen)
Packit 1fb8d4
Packit 1fb8d4
#define SCardGetReaderCapabilities SCardGetAttrib
Packit 1fb8d4
#define SCardSetReaderCapabilities SCardSetAttrib
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit Service 5a9772
	LPSTR szReader;
Packit 1fb8d4
	LPVOID pvUserData;
Packit 1fb8d4
	DWORD dwCurrentState;
Packit 1fb8d4
	DWORD dwEventState;
Packit 1fb8d4
	DWORD cbAtr;
Packit 1fb8d4
	BYTE rgbAtr[36];
Packit 1fb8d4
} SCARD_READERSTATEA, *PSCARD_READERSTATEA, *LPSCARD_READERSTATEA;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit Service 5a9772
	LPWSTR szReader;
Packit 1fb8d4
	LPVOID pvUserData;
Packit 1fb8d4
	DWORD dwCurrentState;
Packit 1fb8d4
	DWORD dwEventState;
Packit 1fb8d4
	DWORD cbAtr;
Packit 1fb8d4
	BYTE rgbAtr[36];
Packit 1fb8d4
} SCARD_READERSTATEW, *PSCARD_READERSTATEW, *LPSCARD_READERSTATEW;
Packit 1fb8d4
Packit 1fb8d4
typedef struct _SCARD_ATRMASK
Packit 1fb8d4
{
Packit 1fb8d4
	DWORD cbAtr;
Packit 1fb8d4
	BYTE rgbAtr[36];
Packit 1fb8d4
	BYTE rgbMask[36];
Packit 1fb8d4
} SCARD_ATRMASK, *PSCARD_ATRMASK, *LPSCARD_ATRMASK;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	DWORD dwStructSize;
Packit 1fb8d4
	LPSTR lpstrGroupNames;
Packit 1fb8d4
	DWORD nMaxGroupNames;
Packit 1fb8d4
	LPCGUID rgguidInterfaces;
Packit 1fb8d4
	DWORD cguidInterfaces;
Packit 1fb8d4
	LPSTR lpstrCardNames;
Packit 1fb8d4
	DWORD nMaxCardNames;
Packit 1fb8d4
	LPOCNCHKPROC lpfnCheck;
Packit 1fb8d4
	LPOCNCONNPROCA lpfnConnect;
Packit 1fb8d4
	LPOCNDSCPROC lpfnDisconnect;
Packit 1fb8d4
	LPVOID pvUserData;
Packit 1fb8d4
	DWORD dwShareMode;
Packit 1fb8d4
	DWORD dwPreferredProtocols;
Packit 1fb8d4
} OPENCARD_SEARCH_CRITERIAA, *POPENCARD_SEARCH_CRITERIAA, *LPOPENCARD_SEARCH_CRITERIAA;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	DWORD dwStructSize;
Packit 1fb8d4
	LPWSTR lpstrGroupNames;
Packit 1fb8d4
	DWORD nMaxGroupNames;
Packit 1fb8d4
	LPCGUID rgguidInterfaces;
Packit 1fb8d4
	DWORD cguidInterfaces;
Packit 1fb8d4
	LPWSTR lpstrCardNames;
Packit 1fb8d4
	DWORD nMaxCardNames;
Packit 1fb8d4
	LPOCNCHKPROC lpfnCheck;
Packit 1fb8d4
	LPOCNCONNPROCW lpfnConnect;
Packit 1fb8d4
	LPOCNDSCPROC lpfnDisconnect;
Packit 1fb8d4
	LPVOID pvUserData;
Packit 1fb8d4
	DWORD dwShareMode;
Packit 1fb8d4
	DWORD dwPreferredProtocols;
Packit 1fb8d4
} OPENCARD_SEARCH_CRITERIAW, *POPENCARD_SEARCH_CRITERIAW, *LPOPENCARD_SEARCH_CRITERIAW;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	DWORD dwStructSize;
Packit 1fb8d4
	SCARDCONTEXT hSCardContext;
Packit 1fb8d4
	HWND hwndOwner;
Packit 1fb8d4
	DWORD dwFlags;
Packit 1fb8d4
	LPCSTR lpstrTitle;
Packit 1fb8d4
	LPCSTR lpstrSearchDesc;
Packit 1fb8d4
	HICON hIcon;
Packit 1fb8d4
	POPENCARD_SEARCH_CRITERIAA pOpenCardSearchCriteria;
Packit 1fb8d4
	LPOCNCONNPROCA lpfnConnect;
Packit 1fb8d4
	LPVOID pvUserData;
Packit 1fb8d4
	DWORD dwShareMode;
Packit 1fb8d4
	DWORD dwPreferredProtocols;
Packit 1fb8d4
	LPSTR lpstrRdr;
Packit 1fb8d4
	DWORD nMaxRdr;
Packit 1fb8d4
	LPSTR lpstrCard;
Packit 1fb8d4
	DWORD nMaxCard;
Packit 1fb8d4
	DWORD dwActiveProtocol;
Packit 1fb8d4
	SCARDHANDLE hCardHandle;
Packit 1fb8d4
} OPENCARDNAME_EXA, *POPENCARDNAME_EXA, *LPOPENCARDNAME_EXA;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	DWORD dwStructSize;
Packit 1fb8d4
	SCARDCONTEXT hSCardContext;
Packit 1fb8d4
	HWND hwndOwner;
Packit 1fb8d4
	DWORD dwFlags;
Packit 1fb8d4
	LPCWSTR lpstrTitle;
Packit 1fb8d4
	LPCWSTR lpstrSearchDesc;
Packit 1fb8d4
	HICON hIcon;
Packit 1fb8d4
	POPENCARD_SEARCH_CRITERIAW pOpenCardSearchCriteria;
Packit 1fb8d4
	LPOCNCONNPROCW lpfnConnect;
Packit 1fb8d4
	LPVOID pvUserData;
Packit 1fb8d4
	DWORD dwShareMode;
Packit 1fb8d4
	DWORD dwPreferredProtocols;
Packit 1fb8d4
	LPWSTR lpstrRdr;
Packit 1fb8d4
	DWORD nMaxRdr;
Packit 1fb8d4
	LPWSTR lpstrCard;
Packit 1fb8d4
	DWORD nMaxCard;
Packit 1fb8d4
	DWORD dwActiveProtocol;
Packit 1fb8d4
	SCARDHANDLE hCardHandle;
Packit 1fb8d4
} OPENCARDNAME_EXW, *POPENCARDNAME_EXW, *LPOPENCARDNAME_EXW;
Packit 1fb8d4
Packit 1fb8d4
#define OPENCARDNAMEA_EX OPENCARDNAME_EXA
Packit 1fb8d4
#define OPENCARDNAMEW_EX OPENCARDNAME_EXW
Packit 1fb8d4
#define POPENCARDNAMEA_EX POPENCARDNAME_EXA
Packit 1fb8d4
#define POPENCARDNAMEW_EX POPENCARDNAME_EXW
Packit 1fb8d4
#define LPOPENCARDNAMEA_EX LPOPENCARDNAME_EXA
Packit 1fb8d4
#define LPOPENCARDNAMEW_EX LPOPENCARDNAME_EXW
Packit 1fb8d4
Packit 1fb8d4
typedef enum
Packit 1fb8d4
{
Packit Service 5a9772
	RSR_MATCH_TYPE_READER_AND_CONTAINER = 1,
Packit Service 5a9772
	RSR_MATCH_TYPE_SERIAL_NUMBER,
Packit Service 5a9772
	RSR_MATCH_TYPE_ALL_CARDS
Packit 1fb8d4
} READER_SEL_REQUEST_MATCH_TYPE;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	DWORD dwShareMode;
Packit 1fb8d4
	DWORD dwPreferredProtocols;
Packit 1fb8d4
	READER_SEL_REQUEST_MATCH_TYPE MatchType;
Packit Service 5a9772
	union {
Packit 1fb8d4
		struct
Packit 1fb8d4
		{
Packit 1fb8d4
			DWORD cbReaderNameOffset;
Packit 1fb8d4
			DWORD cchReaderNameLength;
Packit 1fb8d4
			DWORD cbContainerNameOffset;
Packit 1fb8d4
			DWORD cchContainerNameLength;
Packit 1fb8d4
			DWORD dwDesiredCardModuleVersion;
Packit 1fb8d4
			DWORD dwCspFlags;
Packit 1fb8d4
		} ReaderAndContainerParameter;
Packit 1fb8d4
		struct
Packit 1fb8d4
		{
Packit 1fb8d4
			DWORD cbSerialNumberOffset;
Packit 1fb8d4
			DWORD cbSerialNumberLength;
Packit 1fb8d4
			DWORD dwDesiredCardModuleVersion;
Packit 1fb8d4
		} SerialNumberParameter;
Packit 1fb8d4
	};
Packit 1fb8d4
} READER_SEL_REQUEST, *PREADER_SEL_REQUEST;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	DWORD cbReaderNameOffset;
Packit 1fb8d4
	DWORD cchReaderNameLength;
Packit 1fb8d4
	DWORD cbCardNameOffset;
Packit 1fb8d4
	DWORD cchCardNameLength;
Packit 1fb8d4
} READER_SEL_RESPONSE, *PREADER_SEL_RESPONSE;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	DWORD dwStructSize;
Packit 1fb8d4
	HWND hwndOwner;
Packit 1fb8d4
	SCARDCONTEXT hSCardContext;
Packit 1fb8d4
	LPSTR lpstrGroupNames;
Packit 1fb8d4
	DWORD nMaxGroupNames;
Packit 1fb8d4
	LPSTR lpstrCardNames;
Packit 1fb8d4
	DWORD nMaxCardNames;
Packit 1fb8d4
	LPCGUID rgguidInterfaces;
Packit 1fb8d4
	DWORD cguidInterfaces;
Packit 1fb8d4
	LPSTR lpstrRdr;
Packit 1fb8d4
	DWORD nMaxRdr;
Packit 1fb8d4
	LPSTR lpstrCard;
Packit 1fb8d4
	DWORD nMaxCard;
Packit 1fb8d4
	LPCSTR lpstrTitle;
Packit 1fb8d4
	DWORD dwFlags;
Packit 1fb8d4
	LPVOID pvUserData;
Packit 1fb8d4
	DWORD dwShareMode;
Packit 1fb8d4
	DWORD dwPreferredProtocols;
Packit 1fb8d4
	DWORD dwActiveProtocol;
Packit 1fb8d4
	LPOCNCONNPROCA lpfnConnect;
Packit 1fb8d4
	LPOCNCHKPROC lpfnCheck;
Packit 1fb8d4
	LPOCNDSCPROC lpfnDisconnect;
Packit 1fb8d4
	SCARDHANDLE hCardHandle;
Packit 1fb8d4
} OPENCARDNAMEA, *POPENCARDNAMEA, *LPOPENCARDNAMEA;
Packit 1fb8d4
Packit 1fb8d4
typedef struct
Packit 1fb8d4
{
Packit 1fb8d4
	DWORD dwStructSize;
Packit 1fb8d4
	HWND hwndOwner;
Packit 1fb8d4
	SCARDCONTEXT hSCardContext;
Packit 1fb8d4
	LPWSTR lpstrGroupNames;
Packit 1fb8d4
	DWORD nMaxGroupNames;
Packit 1fb8d4
	LPWSTR lpstrCardNames;
Packit 1fb8d4
	DWORD nMaxCardNames;
Packit 1fb8d4
	LPCGUID rgguidInterfaces;
Packit 1fb8d4
	DWORD cguidInterfaces;
Packit 1fb8d4
	LPWSTR lpstrRdr;
Packit 1fb8d4
	DWORD nMaxRdr;
Packit 1fb8d4
	LPWSTR lpstrCard;
Packit 1fb8d4
	DWORD nMaxCard;
Packit 1fb8d4
	LPCWSTR lpstrTitle;
Packit 1fb8d4
	DWORD dwFlags;
Packit 1fb8d4
	LPVOID pvUserData;
Packit 1fb8d4
	DWORD dwShareMode;
Packit 1fb8d4
	DWORD dwPreferredProtocols;
Packit 1fb8d4
	DWORD dwActiveProtocol;
Packit 1fb8d4
	LPOCNCONNPROCW lpfnConnect;
Packit 1fb8d4
	LPOCNCHKPROC lpfnCheck;
Packit 1fb8d4
	LPOCNDSCPROC lpfnDisconnect;
Packit 1fb8d4
	SCARDHANDLE hCardHandle;
Packit 1fb8d4
} OPENCARDNAMEW, *POPENCARDNAMEW, *LPOPENCARDNAMEW;
Packit 1fb8d4
Packit 1fb8d4
#pragma pack(pop)
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit Service 5a9772
#define LPOCNCONNPROC LPOCNCONNPROCW
Packit Service 5a9772
#define SCARD_READERSTATE SCARD_READERSTATEW
Packit Service 5a9772
#define PSCARD_READERSTATE PSCARD_READERSTATEW
Packit Service 5a9772
#define LPSCARD_READERSTATE LPSCARD_READERSTATEW
Packit Service 5a9772
#define OPENCARD_SEARCH_CRITERIA OPENCARD_SEARCH_CRITERIAW
Packit Service 5a9772
#define LOPENCARD_SEARCH_CRITERIA LOPENCARD_SEARCH_CRITERIAW
Packit Service 5a9772
#define LPOPENCARD_SEARCH_CRITERIA LPOPENCARD_SEARCH_CRITERIAW
Packit Service 5a9772
#define OPENCARDNAME_EX OPENCARDNAME_EXW
Packit Service 5a9772
#define LOPENCARDNAME_EX LOPENCARDNAME_EXW
Packit Service 5a9772
#define LPOPENCARDNAME_EX LPOPENCARDNAME_EXW
Packit Service 5a9772
#define OPENCARDNAME OPENCARDNAMEW
Packit Service 5a9772
#define LOPENCARDNAME LOPENCARDNAMEW
Packit Service 5a9772
#define LPOPENCARDNAME LPOPENCARDNAMEW
Packit 1fb8d4
#else
Packit Service 5a9772
#define LPOCNCONNPROC LPOCNCONNPROCA
Packit Service 5a9772
#define SCARD_READERSTATE SCARD_READERSTATEA
Packit Service 5a9772
#define PSCARD_READERSTATE PSCARD_READERSTATEA
Packit Service 5a9772
#define LPSCARD_READERSTATE LPSCARD_READERSTATEA
Packit Service 5a9772
#define OPENCARD_SEARCH_CRITERIA OPENCARD_SEARCH_CRITERIAA
Packit Service 5a9772
#define LOPENCARD_SEARCH_CRITERIA LOPENCARD_SEARCH_CRITERIAA
Packit Service 5a9772
#define LPOPENCARD_SEARCH_CRITERIA LPOPENCARD_SEARCH_CRITERIAA
Packit Service 5a9772
#define OPENCARDNAME_EX OPENCARDNAME_EXA
Packit Service 5a9772
#define LOPENCARDNAME_EX LOPENCARDNAME_EXA
Packit Service 5a9772
#define LPOPENCARDNAME_EX LPOPENCARDNAME_EXA
Packit Service 5a9772
#define OPENCARDNAME OPENCARDNAMEA
Packit Service 5a9772
#define LOPENCARDNAME LOPENCARDNAMEA
Packit Service 5a9772
#define LPOPENCARDNAME LPOPENCARDNAMEA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#ifdef __cplusplus
Packit Service 5a9772
extern "C"
Packit Service 5a9772
{
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	extern const SCARD_IO_REQUEST g_rgSCardT0Pci;
Packit Service 5a9772
	extern const SCARD_IO_REQUEST g_rgSCardT1Pci;
Packit Service 5a9772
	extern const SCARD_IO_REQUEST g_rgSCardRawPci;
Packit 1fb8d4
Packit Service 5a9772
#define SCARD_PCI_T0 (&g_rgSCardT0Pci)
Packit Service 5a9772
#define SCARD_PCI_T1 (&g_rgSCardT1Pci)
Packit Service 5a9772
#define SCARD_PCI_RAW (&g_rgSCardRawPci)
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1,
Packit Service 5a9772
	                                              LPCVOID pvReserved2, LPSCARDCONTEXT phContext);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardReleaseContext(SCARDCONTEXT hContext);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardIsValidContext(SCARDCONTEXT hContext);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardListReaderGroupsA(SCARDCONTEXT hContext, LPSTR mszGroups,
Packit Service 5a9772
	                                               LPDWORD pcchGroups);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardListReaderGroupsW(SCARDCONTEXT hContext, LPWSTR mszGroups,
Packit Service 5a9772
	                                               LPDWORD pcchGroups);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardListReadersA(SCARDCONTEXT hContext, LPCSTR mszGroups,
Packit Service 5a9772
	                                          LPSTR mszReaders, LPDWORD pcchReaders);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardListReadersW(SCARDCONTEXT hContext, LPCWSTR mszGroups,
Packit Service 5a9772
	                                          LPWSTR mszReaders, LPDWORD pcchReaders);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardListCardsA(SCARDCONTEXT hContext, LPCBYTE pbAtr,
Packit Service 5a9772
	                                        LPCGUID rgquidInterfaces, DWORD cguidInterfaceCount,
Packit Service 5a9772
	                                        CHAR* mszCards, LPDWORD pcchCards);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardListCardsW(SCARDCONTEXT hContext, LPCBYTE pbAtr,
Packit Service 5a9772
	                                        LPCGUID rgquidInterfaces, DWORD cguidInterfaceCount,
Packit Service 5a9772
	                                        WCHAR* mszCards, LPDWORD pcchCards);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardListInterfacesA(SCARDCONTEXT hContext, LPCSTR szCard,
Packit Service 5a9772
	                                             LPGUID pguidInterfaces, LPDWORD pcguidInterfaces);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardListInterfacesW(SCARDCONTEXT hContext, LPCWSTR szCard,
Packit Service 5a9772
	                                             LPGUID pguidInterfaces, LPDWORD pcguidInterfaces);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetProviderIdA(SCARDCONTEXT hContext, LPCSTR szCard,
Packit Service 5a9772
	                                            LPGUID pguidProviderId);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetProviderIdW(SCARDCONTEXT hContext, LPCWSTR szCard,
Packit Service 5a9772
	                                            LPGUID pguidProviderId);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetCardTypeProviderNameA(SCARDCONTEXT hContext, LPCSTR szCardName,
Packit Service 5a9772
	                                                      DWORD dwProviderId, CHAR* szProvider,
Packit Service 5a9772
	                                                      LPDWORD pcchProvider);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetCardTypeProviderNameW(SCARDCONTEXT hContext, LPCWSTR szCardName,
Packit Service 5a9772
	                                                      DWORD dwProviderId, WCHAR* szProvider,
Packit Service 5a9772
	                                                      LPDWORD pcchProvider);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardIntroduceReaderGroupA(SCARDCONTEXT hContext, LPCSTR szGroupName);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardIntroduceReaderGroupW(SCARDCONTEXT hContext, LPCWSTR szGroupName);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardForgetReaderGroupA(SCARDCONTEXT hContext, LPCSTR szGroupName);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardForgetReaderGroupW(SCARDCONTEXT hContext, LPCWSTR szGroupName);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardIntroduceReaderA(SCARDCONTEXT hContext, LPCSTR szReaderName,
Packit Service 5a9772
	                                              LPCSTR szDeviceName);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardIntroduceReaderW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
Packit Service 5a9772
	                                              LPCWSTR szDeviceName);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardForgetReaderA(SCARDCONTEXT hContext, LPCSTR szReaderName);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardForgetReaderW(SCARDCONTEXT hContext, LPCWSTR szReaderName);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardAddReaderToGroupA(SCARDCONTEXT hContext, LPCSTR szReaderName,
Packit Service 5a9772
	                                               LPCSTR szGroupName);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardAddReaderToGroupW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
Packit Service 5a9772
	                                               LPCWSTR szGroupName);
Packit 1fb8d4
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardRemoveReaderFromGroupA(SCARDCONTEXT hContext, LPCSTR szReaderName,
Packit Service 5a9772
	                                                    LPCSTR szGroupName);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardRemoveReaderFromGroupW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
Packit Service 5a9772
	                                                    LPCWSTR szGroupName);
Packit 1fb8d4
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardIntroduceCardTypeA(SCARDCONTEXT hContext, LPCSTR szCardName,
Packit Service 5a9772
	                                                LPCGUID pguidPrimaryProvider,
Packit Service 5a9772
	                                                LPCGUID rgguidInterfaces,
Packit Service 5a9772
	                                                DWORD dwInterfaceCount, LPCBYTE pbAtr,
Packit Service 5a9772
	                                                LPCBYTE pbAtrMask, DWORD cbAtrLen);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardIntroduceCardTypeW(SCARDCONTEXT hContext, LPCWSTR szCardName,
Packit Service 5a9772
	                                                LPCGUID pguidPrimaryProvider,
Packit Service 5a9772
	                                                LPCGUID rgguidInterfaces,
Packit Service 5a9772
	                                                DWORD dwInterfaceCount, LPCBYTE pbAtr,
Packit Service 5a9772
	                                                LPCBYTE pbAtrMask, DWORD cbAtrLen);
Packit 1fb8d4
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardSetCardTypeProviderNameA(SCARDCONTEXT hContext, LPCSTR szCardName,
Packit Service 5a9772
	                                                      DWORD dwProviderId, LPCSTR szProvider);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardSetCardTypeProviderNameW(SCARDCONTEXT hContext, LPCWSTR szCardName,
Packit Service 5a9772
	                                                      DWORD dwProviderId, LPCWSTR szProvider);
Packit 1fb8d4
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardForgetCardTypeA(SCARDCONTEXT hContext, LPCSTR szCardName);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardForgetCardTypeW(SCARDCONTEXT hContext, LPCWSTR szCardName);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardFreeMemory(SCARDCONTEXT hContext, LPVOID pvMem);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI HANDLE WINAPI SCardAccessStartedEvent(void);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI void WINAPI SCardReleaseStartedEvent(void);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardLocateCardsA(SCARDCONTEXT hContext, LPCSTR mszCards,
Packit Service 5a9772
	                                          LPSCARD_READERSTATEA rgReaderStates, DWORD cReaders);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardLocateCardsW(SCARDCONTEXT hContext, LPCWSTR mszCards,
Packit Service 5a9772
	                                          LPSCARD_READERSTATEW rgReaderStates, DWORD cReaders);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardLocateCardsByATRA(SCARDCONTEXT hContext,
Packit Service 5a9772
	                                               LPSCARD_ATRMASK rgAtrMasks, DWORD cAtrs,
Packit Service 5a9772
	                                               LPSCARD_READERSTATEA rgReaderStates,
Packit Service 5a9772
	                                               DWORD cReaders);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardLocateCardsByATRW(SCARDCONTEXT hContext,
Packit Service 5a9772
	                                               LPSCARD_ATRMASK rgAtrMasks, DWORD cAtrs,
Packit Service 5a9772
	                                               LPSCARD_READERSTATEW rgReaderStates,
Packit Service 5a9772
	                                               DWORD cReaders);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetStatusChangeA(SCARDCONTEXT hContext, DWORD dwTimeout,
Packit Service 5a9772
	                                              LPSCARD_READERSTATEA rgReaderStates,
Packit Service 5a9772
	                                              DWORD cReaders);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetStatusChangeW(SCARDCONTEXT hContext, DWORD dwTimeout,
Packit Service 5a9772
	                                              LPSCARD_READERSTATEW rgReaderStates,
Packit Service 5a9772
	                                              DWORD cReaders);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardCancel(SCARDCONTEXT hContext);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardConnectA(SCARDCONTEXT hContext, LPCSTR szReader, DWORD dwShareMode,
Packit Service 5a9772
	                                      DWORD dwPreferredProtocols, LPSCARDHANDLE phCard,
Packit Service 5a9772
	                                      LPDWORD pdwActiveProtocol);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardConnectW(SCARDCONTEXT hContext, LPCWSTR szReader,
Packit Service 5a9772
	                                      DWORD dwShareMode, DWORD dwPreferredProtocols,
Packit Service 5a9772
	                                      LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardReconnect(SCARDHANDLE hCard, DWORD dwShareMode,
Packit Service 5a9772
	                                       DWORD dwPreferredProtocols, DWORD dwInitialization,
Packit Service 5a9772
	                                       LPDWORD pdwActiveProtocol);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardBeginTransaction(SCARDHANDLE hCard);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardEndTransaction(SCARDHANDLE hCard, DWORD dwDisposition);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardCancelTransaction(SCARDHANDLE hCard);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardState(SCARDHANDLE hCard, LPDWORD pdwState, LPDWORD pdwProtocol,
Packit Service 5a9772
	                                   LPBYTE pbAtr, LPDWORD pcbAtrLen);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardStatusA(SCARDHANDLE hCard, LPSTR mszReaderNames,
Packit Service 5a9772
	                                     LPDWORD pcchReaderLen, LPDWORD pdwState,
Packit Service 5a9772
	                                     LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardStatusW(SCARDHANDLE hCard, LPWSTR mszReaderNames,
Packit Service 5a9772
	                                     LPDWORD pcchReaderLen, LPDWORD pdwState,
Packit Service 5a9772
	                                     LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardTransmit(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci,
Packit Service 5a9772
	                                      LPCBYTE pbSendBuffer, DWORD cbSendLength,
Packit Service 5a9772
	                                      LPSCARD_IO_REQUEST pioRecvPci, LPBYTE pbRecvBuffer,
Packit Service 5a9772
	                                      LPDWORD pcbRecvLength);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetTransmitCount(SCARDHANDLE hCard, LPDWORD pcTransmitCount);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardControl(SCARDHANDLE hCard, DWORD dwControlCode, LPCVOID lpInBuffer,
Packit Service 5a9772
	                                     DWORD cbInBufferSize, LPVOID lpOutBuffer,
Packit Service 5a9772
	                                     DWORD cbOutBufferSize, LPDWORD lpBytesReturned);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetAttrib(SCARDHANDLE hCard, DWORD dwAttrId, LPBYTE pbAttr,
Packit Service 5a9772
	                                       LPDWORD pcbAttrLen);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardSetAttrib(SCARDHANDLE hCard, DWORD dwAttrId, LPCBYTE pbAttr,
Packit Service 5a9772
	                                       DWORD cbAttrLen);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardUIDlgSelectCardA(LPOPENCARDNAMEA_EX pDlgStruc);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardUIDlgSelectCardW(LPOPENCARDNAMEW_EX pDlgStruc);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI GetOpenCardNameA(LPOPENCARDNAMEA pDlgStruc);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI GetOpenCardNameW(LPOPENCARDNAMEW pDlgStruc);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardDlgExtendedError(void);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardReadCacheA(SCARDCONTEXT hContext, UUID* CardIdentifier,
Packit Service 5a9772
	                                        DWORD FreshnessCounter, LPSTR LookupName, PBYTE Data,
Packit Service 5a9772
	                                        DWORD* DataLen);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardReadCacheW(SCARDCONTEXT hContext, UUID* CardIdentifier,
Packit Service 5a9772
	                                        DWORD FreshnessCounter, LPWSTR LookupName, PBYTE Data,
Packit Service 5a9772
	                                        DWORD* DataLen);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardWriteCacheA(SCARDCONTEXT hContext, UUID* CardIdentifier,
Packit Service 5a9772
	                                         DWORD FreshnessCounter, LPSTR LookupName, PBYTE Data,
Packit Service 5a9772
	                                         DWORD DataLen);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardWriteCacheW(SCARDCONTEXT hContext, UUID* CardIdentifier,
Packit Service 5a9772
	                                         DWORD FreshnessCounter, LPWSTR LookupName, PBYTE Data,
Packit Service 5a9772
	                                         DWORD DataLen);
Packit 1fb8d4
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetReaderIconA(SCARDCONTEXT hContext, LPCSTR szReaderName,
Packit Service 5a9772
	                                            LPBYTE pbIcon, LPDWORD pcbIcon);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetReaderIconW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
Packit Service 5a9772
	                                            LPBYTE pbIcon, LPDWORD pcbIcon);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetDeviceTypeIdA(SCARDCONTEXT hContext, LPCSTR szReaderName,
Packit Service 5a9772
	                                              LPDWORD pdwDeviceTypeId);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetDeviceTypeIdW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
Packit Service 5a9772
	                                              LPDWORD pdwDeviceTypeId);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetReaderDeviceInstanceIdA(SCARDCONTEXT hContext,
Packit Service 5a9772
	                                                        LPCSTR szReaderName,
Packit Service 5a9772
	                                                        LPSTR szDeviceInstanceId,
Packit Service 5a9772
	                                                        LPDWORD pcchDeviceInstanceId);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardGetReaderDeviceInstanceIdW(SCARDCONTEXT hContext,
Packit Service 5a9772
	                                                        LPCWSTR szReaderName,
Packit Service 5a9772
	                                                        LPWSTR szDeviceInstanceId,
Packit Service 5a9772
	                                                        LPDWORD pcchDeviceInstanceId);
Packit Service 5a9772
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardListReadersWithDeviceInstanceIdA(SCARDCONTEXT hContext,
Packit Service 5a9772
	                                                              LPCSTR szDeviceInstanceId,
Packit Service 5a9772
	                                                              LPSTR mszReaders,
Packit Service 5a9772
	                                                              LPDWORD pcchReaders);
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardListReadersWithDeviceInstanceIdW(SCARDCONTEXT hContext,
Packit Service 5a9772
	                                                              LPCWSTR szDeviceInstanceId,
Packit Service 5a9772
	                                                              LPWSTR mszReaders,
Packit Service 5a9772
	                                                              LPDWORD pcchReaders);
Packit 1fb8d4
Packit Service 5a9772
	WINSCARDAPI LONG WINAPI SCardAudit(SCARDCONTEXT hContext, DWORD dwEvent);
Packit 1fb8d4
Packit 1fb8d4
#ifdef UNICODE
Packit Service 5a9772
#define SCardListReaderGroups SCardListReaderGroupsW
Packit Service 5a9772
#define SCardListReaders SCardListReadersW
Packit Service 5a9772
#define SCardListCards SCardListCardsW
Packit Service 5a9772
#define SCardListInterfaces SCardListInterfacesW
Packit Service 5a9772
#define SCardGetProviderId SCardGetProviderIdW
Packit Service 5a9772
#define SCardGetCardTypeProviderName SCardGetCardTypeProviderNameW
Packit Service 5a9772
#define SCardIntroduceReaderGroup SCardIntroduceReaderGroupW
Packit Service 5a9772
#define SCardForgetReaderGroup SCardForgetReaderGroupW
Packit Service 5a9772
#define SCardIntroduceReader SCardIntroduceReaderW
Packit Service 5a9772
#define SCardForgetReader SCardForgetReaderW
Packit Service 5a9772
#define SCardAddReaderToGroup SCardAddReaderToGroupW
Packit Service 5a9772
#define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupW
Packit Service 5a9772
#define SCardIntroduceCardType SCardIntroduceCardTypeW
Packit Service 5a9772
#define SCardSetCardTypeProviderName SCardSetCardTypeProviderNameW
Packit Service 5a9772
#define SCardForgetCardType SCardForgetCardTypeW
Packit Service 5a9772
#define SCardLocateCards SCardLocateCardsW
Packit Service 5a9772
#define SCardLocateCardsByATR SCardLocateCardsByATRW
Packit Service 5a9772
#define SCardGetStatusChange SCardGetStatusChangeW
Packit Service 5a9772
#define SCardConnect SCardConnectW
Packit Service 5a9772
#define SCardStatus SCardStatusW
Packit Service 5a9772
#define SCardUIDlgSelectCard SCardUIDlgSelectCardW
Packit Service 5a9772
#define GetOpenCardName GetOpenCardNameW
Packit Service 5a9772
#define SCardReadCache SCardReadCacheW
Packit Service 5a9772
#define SCardWriteCache SCardWriteCacheW
Packit Service 5a9772
#define SCardGetReaderIcon SCardGetReaderIconW
Packit Service 5a9772
#define SCardGetDeviceTypeId SCardGetDeviceTypeIdW
Packit Service 5a9772
#define SCardGetReaderDeviceInstanceId SCardGetReaderDeviceInstanceIdW
Packit Service 5a9772
#define SCardListReadersWithDeviceInstanceId SCardListReadersWithDeviceInstanceIdW
Packit 1fb8d4
#else
Packit Service 5a9772
#define SCardListReaderGroups SCardListReaderGroupsA
Packit Service 5a9772
#define SCardListReaders SCardListReadersA
Packit Service 5a9772
#define SCardListCards SCardListCardsA
Packit Service 5a9772
#define SCardListInterfaces SCardListInterfacesA
Packit Service 5a9772
#define SCardGetProviderId SCardGetProviderIdA
Packit Service 5a9772
#define SCardGetCardTypeProviderName SCardGetCardTypeProviderNameA
Packit Service 5a9772
#define SCardIntroduceReaderGroup SCardIntroduceReaderGroupA
Packit Service 5a9772
#define SCardForgetReaderGroup SCardForgetReaderGroupA
Packit Service 5a9772
#define SCardIntroduceReader SCardIntroduceReaderA
Packit Service 5a9772
#define SCardForgetReader SCardForgetReaderA
Packit Service 5a9772
#define SCardAddReaderToGroup SCardAddReaderToGroupA
Packit Service 5a9772
#define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupA
Packit Service 5a9772
#define SCardIntroduceCardType SCardIntroduceCardTypeA
Packit Service 5a9772
#define SCardSetCardTypeProviderName SCardSetCardTypeProviderNameA
Packit Service 5a9772
#define SCardForgetCardType SCardForgetCardTypeA
Packit Service 5a9772
#define SCardLocateCards SCardLocateCardsA
Packit Service 5a9772
#define SCardLocateCardsByATR SCardLocateCardsByATRA
Packit Service 5a9772
#define SCardGetStatusChange SCardGetStatusChangeA
Packit Service 5a9772
#define SCardConnect SCardConnectA
Packit Service 5a9772
#define SCardStatus SCardStatusA
Packit Service 5a9772
#define SCardUIDlgSelectCard SCardUIDlgSelectCardA
Packit Service 5a9772
#define GetOpenCardName GetOpenCardNameA
Packit Service 5a9772
#define SCardReadCache SCardReadCacheA
Packit Service 5a9772
#define SCardWriteCache SCardWriteCacheA
Packit Service 5a9772
#define SCardGetReaderIcon SCardGetReaderIconA
Packit Service 5a9772
#define SCardGetDeviceTypeId SCardGetDeviceTypeIdA
Packit Service 5a9772
#define SCardGetReaderDeviceInstanceId SCardGetReaderDeviceInstanceIdA
Packit Service 5a9772
#define SCardListReadersWithDeviceInstanceId SCardListReadersWithDeviceInstanceIdA
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#ifdef __cplusplus
Packit 1fb8d4
}
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
/**
Packit 1fb8d4
 * Extended API
Packit 1fb8d4
 */
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardEstablishContext)(DWORD dwScope, LPCVOID pvReserved1,
Packit Service 5a9772
                                              LPCVOID pvReserved2, LPSCARDCONTEXT phContext);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardReleaseContext)(SCARDCONTEXT hContext);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardIsValidContext)(SCARDCONTEXT hContext);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardListReaderGroupsA)(SCARDCONTEXT hContext, LPSTR mszGroups,
Packit Service 5a9772
                                               LPDWORD pcchGroups);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardListReaderGroupsW)(SCARDCONTEXT hContext, LPWSTR mszGroups,
Packit Service 5a9772
                                               LPDWORD pcchGroups);
Packit Service 5a9772
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardListReadersA)(SCARDCONTEXT hContext, LPCSTR mszGroups, LPSTR mszReaders,
Packit Service 5a9772
                                          LPDWORD pcchReaders);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardListReadersW)(SCARDCONTEXT hContext, LPCWSTR mszGroups,
Packit Service 5a9772
                                          LPWSTR mszReaders, LPDWORD pcchReaders);
Packit Service 5a9772
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardListCardsA)(SCARDCONTEXT hContext, LPCBYTE pbAtr,
Packit Service 5a9772
                                        LPCGUID rgquidInterfaces, DWORD cguidInterfaceCount,
Packit Service 5a9772
                                        CHAR* mszCards, LPDWORD pcchCards);
Packit Service 5a9772
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardListCardsW)(SCARDCONTEXT hContext, LPCBYTE pbAtr,
Packit Service 5a9772
                                        LPCGUID rgquidInterfaces, DWORD cguidInterfaceCount,
Packit Service 5a9772
                                        WCHAR* mszCards, LPDWORD pcchCards);
Packit Service 5a9772
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardListInterfacesA)(SCARDCONTEXT hContext, LPCSTR szCard,
Packit Service 5a9772
                                             LPGUID pguidInterfaces, LPDWORD pcguidInterfaces);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardListInterfacesW)(SCARDCONTEXT hContext, LPCWSTR szCard,
Packit Service 5a9772
                                             LPGUID pguidInterfaces, LPDWORD pcguidInterfaces);
Packit Service 5a9772
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardGetProviderIdA)(SCARDCONTEXT hContext, LPCSTR szCard,
Packit Service 5a9772
                                            LPGUID pguidProviderId);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardGetProviderIdW)(SCARDCONTEXT hContext, LPCWSTR szCard,
Packit Service 5a9772
                                            LPGUID pguidProviderId);
Packit Service 5a9772
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardGetCardTypeProviderNameA)(SCARDCONTEXT hContext, LPCSTR szCardName,
Packit Service 5a9772
                                                      DWORD dwProviderId, CHAR* szProvider,
Packit Service 5a9772
                                                      LPDWORD pcchProvider);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardGetCardTypeProviderNameW)(SCARDCONTEXT hContext, LPCWSTR szCardName,
Packit Service 5a9772
                                                      DWORD dwProviderId, WCHAR* szProvider,
Packit Service 5a9772
                                                      LPDWORD pcchProvider);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardIntroduceReaderGroupA)(SCARDCONTEXT hContext, LPCSTR szGroupName);
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardIntroduceReaderGroupW)(SCARDCONTEXT hContext, LPCWSTR szGroupName);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardForgetReaderGroupA)(SCARDCONTEXT hContext, LPCSTR szGroupName);
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardForgetReaderGroupW)(SCARDCONTEXT hContext, LPCWSTR szGroupName);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardIntroduceReaderA)(SCARDCONTEXT hContext, LPCSTR szReaderName,
Packit Service 5a9772
                                              LPCSTR szDeviceName);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardIntroduceReaderW)(SCARDCONTEXT hContext, LPCWSTR szReaderName,
Packit Service 5a9772
                                              LPCWSTR szDeviceName);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardForgetReaderA)(SCARDCONTEXT hContext, LPCSTR szReaderName);
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardForgetReaderW)(SCARDCONTEXT hContext, LPCWSTR szReaderName);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardAddReaderToGroupA)(SCARDCONTEXT hContext, LPCSTR szReaderName,
Packit Service 5a9772
                                               LPCSTR szGroupName);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardAddReaderToGroupW)(SCARDCONTEXT hContext, LPCWSTR szReaderName,
Packit Service 5a9772
                                               LPCWSTR szGroupName);
Packit Service 5a9772
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardRemoveReaderFromGroupA)(SCARDCONTEXT hContext, LPCSTR szReaderName,
Packit Service 5a9772
                                                    LPCSTR szGroupName);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardRemoveReaderFromGroupW)(SCARDCONTEXT hContext, LPCWSTR szReaderName,
Packit Service 5a9772
                                                    LPCWSTR szGroupName);
Packit Service 5a9772
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardIntroduceCardTypeA)(SCARDCONTEXT hContext, LPCSTR szCardName,
Packit Service 5a9772
                                                LPCGUID pguidPrimaryProvider,
Packit Service 5a9772
                                                LPCGUID rgguidInterfaces, DWORD dwInterfaceCount,
Packit Service 5a9772
                                                LPCBYTE pbAtr, LPCBYTE pbAtrMask, DWORD cbAtrLen);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardIntroduceCardTypeW)(SCARDCONTEXT hContext, LPCWSTR szCardName,
Packit Service 5a9772
                                                LPCGUID pguidPrimaryProvider,
Packit Service 5a9772
                                                LPCGUID rgguidInterfaces, DWORD dwInterfaceCount,
Packit Service 5a9772
                                                LPCBYTE pbAtr, LPCBYTE pbAtrMask, DWORD cbAtrLen);
Packit Service 5a9772
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardSetCardTypeProviderNameA)(SCARDCONTEXT hContext, LPCSTR szCardName,
Packit Service 5a9772
                                                      DWORD dwProviderId, LPCSTR szProvider);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardSetCardTypeProviderNameW)(SCARDCONTEXT hContext, LPCWSTR szCardName,
Packit Service 5a9772
                                                      DWORD dwProviderId, LPCWSTR szProvider);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardForgetCardTypeA)(SCARDCONTEXT hContext, LPCSTR szCardName);
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardForgetCardTypeW)(SCARDCONTEXT hContext, LPCWSTR szCardName);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardFreeMemory)(SCARDCONTEXT hContext, LPVOID pvMem);
Packit 1fb8d4
Packit 1fb8d4
typedef HANDLE(WINAPI* fnSCardAccessStartedEvent)(void);
Packit 1fb8d4
Packit Service 5a9772
typedef void(WINAPI* fnSCardReleaseStartedEvent)(void);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardLocateCardsA)(SCARDCONTEXT hContext, LPCSTR mszCards,
Packit Service 5a9772
                                          LPSCARD_READERSTATEA rgReaderStates, DWORD cReaders);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardLocateCardsW)(SCARDCONTEXT hContext, LPCWSTR mszCards,
Packit Service 5a9772
                                          LPSCARD_READERSTATEW rgReaderStates, DWORD cReaders);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardLocateCardsByATRA)(SCARDCONTEXT hContext, LPSCARD_ATRMASK rgAtrMasks,
Packit Service 5a9772
                                               DWORD cAtrs, LPSCARD_READERSTATEA rgReaderStates,
Packit Service 5a9772
                                               DWORD cReaders);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardLocateCardsByATRW)(SCARDCONTEXT hContext, LPSCARD_ATRMASK rgAtrMasks,
Packit Service 5a9772
                                               DWORD cAtrs, LPSCARD_READERSTATEW rgReaderStates,
Packit Service 5a9772
                                               DWORD cReaders);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardGetStatusChangeA)(SCARDCONTEXT hContext, DWORD dwTimeout,
Packit Service 5a9772
                                              LPSCARD_READERSTATEA rgReaderStates, DWORD cReaders);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardGetStatusChangeW)(SCARDCONTEXT hContext, DWORD dwTimeout,
Packit Service 5a9772
                                              LPSCARD_READERSTATEW rgReaderStates, DWORD cReaders);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardCancel)(SCARDCONTEXT hContext);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardConnectA)(SCARDCONTEXT hContext, LPCSTR szReader, DWORD dwShareMode,
Packit Service 5a9772
                                      DWORD dwPreferredProtocols, LPSCARDHANDLE phCard,
Packit Service 5a9772
                                      LPDWORD pdwActiveProtocol);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardConnectW)(SCARDCONTEXT hContext, LPCWSTR szReader, DWORD dwShareMode,
Packit Service 5a9772
                                      DWORD dwPreferredProtocols, LPSCARDHANDLE phCard,
Packit Service 5a9772
                                      LPDWORD pdwActiveProtocol);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardReconnect)(SCARDHANDLE hCard, DWORD dwShareMode,
Packit Service 5a9772
                                       DWORD dwPreferredProtocols, DWORD dwInitialization,
Packit Service 5a9772
                                       LPDWORD pdwActiveProtocol);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardDisconnect)(SCARDHANDLE hCard, DWORD dwDisposition);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardBeginTransaction)(SCARDHANDLE hCard);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardEndTransaction)(SCARDHANDLE hCard, DWORD dwDisposition);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardCancelTransaction)(SCARDHANDLE hCard);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardState)(SCARDHANDLE hCard, LPDWORD pdwState, LPDWORD pdwProtocol,
Packit Service 5a9772
                                   LPBYTE pbAtr, LPDWORD pcbAtrLen);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardStatusA)(SCARDHANDLE hCard, LPSTR mszReaderNames, LPDWORD pcchReaderLen,
Packit Service 5a9772
                                     LPDWORD pdwState, LPDWORD pdwProtocol, LPBYTE pbAtr,
Packit Service 5a9772
                                     LPDWORD pcbAtrLen);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardStatusW)(SCARDHANDLE hCard, LPWSTR mszReaderNames,
Packit Service 5a9772
                                     LPDWORD pcchReaderLen, LPDWORD pdwState, LPDWORD pdwProtocol,
Packit Service 5a9772
                                     LPBYTE pbAtr, LPDWORD pcbAtrLen);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardTransmit)(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci,
Packit Service 5a9772
                                      LPCBYTE pbSendBuffer, DWORD cbSendLength,
Packit Service 5a9772
                                      LPSCARD_IO_REQUEST pioRecvPci, LPBYTE pbRecvBuffer,
Packit Service 5a9772
                                      LPDWORD pcbRecvLength);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardGetTransmitCount)(SCARDHANDLE hCard, LPDWORD pcTransmitCount);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardControl)(SCARDHANDLE hCard, DWORD dwControlCode, LPCVOID lpInBuffer,
Packit Service 5a9772
                                     DWORD cbInBufferSize, LPVOID lpOutBuffer,
Packit Service 5a9772
                                     DWORD cbOutBufferSize, LPDWORD lpBytesReturned);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardGetAttrib)(SCARDHANDLE hCard, DWORD dwAttrId, LPBYTE pbAttr,
Packit 1fb8d4
                                       LPDWORD pcbAttrLen);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardSetAttrib)(SCARDHANDLE hCard, DWORD dwAttrId, LPCBYTE pbAttr,
Packit 1fb8d4
                                       DWORD cbAttrLen);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardUIDlgSelectCardA)(LPOPENCARDNAMEA_EX pDlgStruc);
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardUIDlgSelectCardW)(LPOPENCARDNAMEW_EX pDlgStruc);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnGetOpenCardNameA)(LPOPENCARDNAMEA pDlgStruc);
Packit 1fb8d4
typedef LONG(WINAPI* fnGetOpenCardNameW)(LPOPENCARDNAMEW pDlgStruc);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardDlgExtendedError)(void);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardReadCacheA)(SCARDCONTEXT hContext, UUID* CardIdentifier,
Packit Service 5a9772
                                        DWORD FreshnessCounter, LPSTR LookupName, PBYTE Data,
Packit Service 5a9772
                                        DWORD* DataLen);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardReadCacheW)(SCARDCONTEXT hContext, UUID* CardIdentifier,
Packit Service 5a9772
                                        DWORD FreshnessCounter, LPWSTR LookupName, PBYTE Data,
Packit Service 5a9772
                                        DWORD* DataLen);
Packit Service 5a9772
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardWriteCacheA)(SCARDCONTEXT hContext, UUID* CardIdentifier,
Packit Service 5a9772
                                         DWORD FreshnessCounter, LPSTR LookupName, PBYTE Data,
Packit Service 5a9772
                                         DWORD DataLen);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardWriteCacheW)(SCARDCONTEXT hContext, UUID* CardIdentifier,
Packit Service 5a9772
                                         DWORD FreshnessCounter, LPWSTR LookupName, PBYTE Data,
Packit Service 5a9772
                                         DWORD DataLen);
Packit Service 5a9772
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardGetReaderIconA)(SCARDCONTEXT hContext, LPCSTR szReaderName,
Packit Service 5a9772
                                            LPBYTE pbIcon, LPDWORD pcbIcon);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardGetReaderIconW)(SCARDCONTEXT hContext, LPCWSTR szReaderName,
Packit Service 5a9772
                                            LPBYTE pbIcon, LPDWORD pcbIcon);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardGetDeviceTypeIdA)(SCARDCONTEXT hContext, LPCSTR szReaderName,
Packit Service 5a9772
                                              LPDWORD pdwDeviceTypeId);
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardGetDeviceTypeIdW)(SCARDCONTEXT hContext, LPCWSTR szReaderName,
Packit Service 5a9772
                                              LPDWORD pdwDeviceTypeId);
Packit 1fb8d4
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardGetReaderDeviceInstanceIdA)(SCARDCONTEXT hContext, LPCSTR szReaderName,
Packit Service 5a9772
                                                        LPSTR szDeviceInstanceId,
Packit Service 5a9772
                                                        LPDWORD pcchDeviceInstanceId);
Packit Service 5a9772
typedef LONG(WINAPI* fnSCardGetReaderDeviceInstanceIdW)(SCARDCONTEXT hContext, LPCWSTR szReaderName,
Packit Service 5a9772
                                                        LPWSTR szDeviceInstanceId,
Packit Service 5a9772
                                                        LPDWORD pcchDeviceInstanceId);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardListReadersWithDeviceInstanceIdA)(SCARDCONTEXT hContext,
Packit Service 5a9772
                                                              LPCSTR szDeviceInstanceId,
Packit Service 5a9772
                                                              LPSTR mszReaders,
Packit Service 5a9772
                                                              LPDWORD pcchReaders);
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardListReadersWithDeviceInstanceIdW)(SCARDCONTEXT hContext,
Packit Service 5a9772
                                                              LPCWSTR szDeviceInstanceId,
Packit Service 5a9772
                                                              LPWSTR mszReaders,
Packit Service 5a9772
                                                              LPDWORD pcchReaders);
Packit 1fb8d4
Packit 1fb8d4
typedef LONG(WINAPI* fnSCardAudit)(SCARDCONTEXT hContext, DWORD dwEvent);
Packit 1fb8d4
Packit 1fb8d4
struct _SCardApiFunctionTable
Packit 1fb8d4
{
Packit 1fb8d4
	DWORD dwVersion;
Packit 1fb8d4
	DWORD dwFlags;
Packit 1fb8d4
Packit 1fb8d4
	fnSCardEstablishContext pfnSCardEstablishContext;
Packit 1fb8d4
	fnSCardReleaseContext pfnSCardReleaseContext;
Packit 1fb8d4
	fnSCardIsValidContext pfnSCardIsValidContext;
Packit 1fb8d4
	fnSCardListReaderGroupsA pfnSCardListReaderGroupsA;
Packit 1fb8d4
	fnSCardListReaderGroupsW pfnSCardListReaderGroupsW;
Packit 1fb8d4
	fnSCardListReadersA pfnSCardListReadersA;
Packit 1fb8d4
	fnSCardListReadersW pfnSCardListReadersW;
Packit 1fb8d4
	fnSCardListCardsA pfnSCardListCardsA;
Packit 1fb8d4
	fnSCardListCardsW pfnSCardListCardsW;
Packit 1fb8d4
	fnSCardListInterfacesA pfnSCardListInterfacesA;
Packit 1fb8d4
	fnSCardListInterfacesW pfnSCardListInterfacesW;
Packit 1fb8d4
	fnSCardGetProviderIdA pfnSCardGetProviderIdA;
Packit 1fb8d4
	fnSCardGetProviderIdW pfnSCardGetProviderIdW;
Packit 1fb8d4
	fnSCardGetCardTypeProviderNameA pfnSCardGetCardTypeProviderNameA;
Packit 1fb8d4
	fnSCardGetCardTypeProviderNameW pfnSCardGetCardTypeProviderNameW;
Packit 1fb8d4
	fnSCardIntroduceReaderGroupA pfnSCardIntroduceReaderGroupA;
Packit 1fb8d4
	fnSCardIntroduceReaderGroupW pfnSCardIntroduceReaderGroupW;
Packit 1fb8d4
	fnSCardForgetReaderGroupA pfnSCardForgetReaderGroupA;
Packit 1fb8d4
	fnSCardForgetReaderGroupW pfnSCardForgetReaderGroupW;
Packit 1fb8d4
	fnSCardIntroduceReaderA pfnSCardIntroduceReaderA;
Packit 1fb8d4
	fnSCardIntroduceReaderW pfnSCardIntroduceReaderW;
Packit 1fb8d4
	fnSCardForgetReaderA pfnSCardForgetReaderA;
Packit 1fb8d4
	fnSCardForgetReaderW pfnSCardForgetReaderW;
Packit 1fb8d4
	fnSCardAddReaderToGroupA pfnSCardAddReaderToGroupA;
Packit 1fb8d4
	fnSCardAddReaderToGroupW pfnSCardAddReaderToGroupW;
Packit 1fb8d4
	fnSCardRemoveReaderFromGroupA pfnSCardRemoveReaderFromGroupA;
Packit 1fb8d4
	fnSCardRemoveReaderFromGroupW pfnSCardRemoveReaderFromGroupW;
Packit 1fb8d4
	fnSCardIntroduceCardTypeA pfnSCardIntroduceCardTypeA;
Packit 1fb8d4
	fnSCardIntroduceCardTypeW pfnSCardIntroduceCardTypeW;
Packit 1fb8d4
	fnSCardSetCardTypeProviderNameA pfnSCardSetCardTypeProviderNameA;
Packit 1fb8d4
	fnSCardSetCardTypeProviderNameW pfnSCardSetCardTypeProviderNameW;
Packit 1fb8d4
	fnSCardForgetCardTypeA pfnSCardForgetCardTypeA;
Packit 1fb8d4
	fnSCardForgetCardTypeW pfnSCardForgetCardTypeW;
Packit 1fb8d4
	fnSCardFreeMemory pfnSCardFreeMemory;
Packit 1fb8d4
	fnSCardAccessStartedEvent pfnSCardAccessStartedEvent;
Packit 1fb8d4
	fnSCardReleaseStartedEvent pfnSCardReleaseStartedEvent;
Packit 1fb8d4
	fnSCardLocateCardsA pfnSCardLocateCardsA;
Packit 1fb8d4
	fnSCardLocateCardsW pfnSCardLocateCardsW;
Packit 1fb8d4
	fnSCardLocateCardsByATRA pfnSCardLocateCardsByATRA;
Packit 1fb8d4
	fnSCardLocateCardsByATRW pfnSCardLocateCardsByATRW;
Packit 1fb8d4
	fnSCardGetStatusChangeA pfnSCardGetStatusChangeA;
Packit 1fb8d4
	fnSCardGetStatusChangeW pfnSCardGetStatusChangeW;
Packit 1fb8d4
	fnSCardCancel pfnSCardCancel;
Packit 1fb8d4
	fnSCardConnectA pfnSCardConnectA;
Packit 1fb8d4
	fnSCardConnectW pfnSCardConnectW;
Packit 1fb8d4
	fnSCardReconnect pfnSCardReconnect;
Packit 1fb8d4
	fnSCardDisconnect pfnSCardDisconnect;
Packit 1fb8d4
	fnSCardBeginTransaction pfnSCardBeginTransaction;
Packit 1fb8d4
	fnSCardEndTransaction pfnSCardEndTransaction;
Packit 1fb8d4
	fnSCardCancelTransaction pfnSCardCancelTransaction;
Packit 1fb8d4
	fnSCardState pfnSCardState;
Packit 1fb8d4
	fnSCardStatusA pfnSCardStatusA;
Packit 1fb8d4
	fnSCardStatusW pfnSCardStatusW;
Packit 1fb8d4
	fnSCardTransmit pfnSCardTransmit;
Packit 1fb8d4
	fnSCardGetTransmitCount pfnSCardGetTransmitCount;
Packit 1fb8d4
	fnSCardControl pfnSCardControl;
Packit 1fb8d4
	fnSCardGetAttrib pfnSCardGetAttrib;
Packit 1fb8d4
	fnSCardSetAttrib pfnSCardSetAttrib;
Packit 1fb8d4
	fnSCardUIDlgSelectCardA pfnSCardUIDlgSelectCardA;
Packit 1fb8d4
	fnSCardUIDlgSelectCardW pfnSCardUIDlgSelectCardW;
Packit 1fb8d4
	fnGetOpenCardNameA pfnGetOpenCardNameA;
Packit 1fb8d4
	fnGetOpenCardNameW pfnGetOpenCardNameW;
Packit 1fb8d4
	fnSCardDlgExtendedError pfnSCardDlgExtendedError;
Packit 1fb8d4
	fnSCardReadCacheA pfnSCardReadCacheA;
Packit 1fb8d4
	fnSCardReadCacheW pfnSCardReadCacheW;
Packit 1fb8d4
	fnSCardWriteCacheA pfnSCardWriteCacheA;
Packit 1fb8d4
	fnSCardWriteCacheW pfnSCardWriteCacheW;
Packit 1fb8d4
	fnSCardGetReaderIconA pfnSCardGetReaderIconA;
Packit 1fb8d4
	fnSCardGetReaderIconW pfnSCardGetReaderIconW;
Packit 1fb8d4
	fnSCardGetDeviceTypeIdA pfnSCardGetDeviceTypeIdA;
Packit 1fb8d4
	fnSCardGetDeviceTypeIdW pfnSCardGetDeviceTypeIdW;
Packit 1fb8d4
	fnSCardGetReaderDeviceInstanceIdA pfnSCardGetReaderDeviceInstanceIdA;
Packit 1fb8d4
	fnSCardGetReaderDeviceInstanceIdW pfnSCardGetReaderDeviceInstanceIdW;
Packit 1fb8d4
	fnSCardListReadersWithDeviceInstanceIdA pfnSCardListReadersWithDeviceInstanceIdA;
Packit 1fb8d4
	fnSCardListReadersWithDeviceInstanceIdW pfnSCardListReadersWithDeviceInstanceIdW;
Packit 1fb8d4
	fnSCardAudit pfnSCardAudit;
Packit 1fb8d4
};
Packit 1fb8d4
Packit 1fb8d4
typedef struct _SCardApiFunctionTable SCardApiFunctionTable;
Packit 1fb8d4
typedef SCardApiFunctionTable* PSCardApiFunctionTable;
Packit 1fb8d4
Packit 1fb8d4
#ifdef __cplusplus
Packit Service 5a9772
extern "C"
Packit Service 5a9772
{
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit Service 5a9772
	WINSCARDAPI const char* WINAPI SCardGetErrorString(LONG errorCode);
Packit Service 5a9772
	WINSCARDAPI const char* WINAPI SCardGetAttributeString(DWORD dwAttrId);
Packit Service 5a9772
	WINSCARDAPI const char* WINAPI SCardGetProtocolString(DWORD dwProtocols);
Packit Service 5a9772
	WINSCARDAPI const char* WINAPI SCardGetShareModeString(DWORD dwShareMode);
Packit Service 5a9772
	WINSCARDAPI const char* WINAPI SCardGetDispositionString(DWORD dwDisposition);
Packit Service 5a9772
	WINSCARDAPI const char* WINAPI SCardGetScopeString(DWORD dwScope);
Packit Service 5a9772
	WINSCARDAPI const char* WINAPI SCardGetCardStateString(DWORD dwCardState);
Packit Service 5a9772
	WINSCARDAPI char* WINAPI SCardGetReaderStateString(DWORD dwReaderState);
Packit 1fb8d4
Packit 1fb8d4
#ifdef __cplusplus
Packit 1fb8d4
}
Packit 1fb8d4
#endif
Packit 1fb8d4
Packit 1fb8d4
#endif /* WINPR_SMARTCARD_H */