📄 winscard.h
字号:
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
WinSCard
Abstract:
This header file provides the definitions and symbols necessary for an
Application or Smart Card Service Provider to access the Smartcard
Subsystem.
Author:
Doug Barlow (dbarlow) 10/23/1996
Environment:
Win32
Notes:
--*/
#ifndef _WINSCARD_H_
#define _WINSCARD_H_
#include <wtypes.h>
#include <winioctl.h>
#include "winsmcrd.h"
#ifndef SCARD_S_SUCCESS
#include "SCardErr.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _LPCBYTE_DEFINED
#define _LPCBYTE_DEFINED
typedef const BYTE *LPCBYTE;
#endif
#ifndef _LPCVOID_DEFINED
#define _LPCVOID_DEFINED
typedef const VOID *LPCVOID;
#endif
#ifndef _LPCGUID_DEFINED
#define _LPCGUID_DEFINED
typedef const GUID *LPCGUID;
#endif
#ifndef WINSCARDAPI
#define WINSCARDAPI
#endif
#ifndef WINSCARDDATA
#define WINSCARDDATA __declspec(dllimport)
#endif
WINSCARDDATA extern const SCARD_IO_REQUEST
g_rgSCardT0Pci,
g_rgSCardT1Pci,
g_rgSCardRawPci;
#define SCARD_PCI_T0 (&g_rgSCardT0Pci)
#define SCARD_PCI_T1 (&g_rgSCardT1Pci)
#define SCARD_PCI_RAW (&g_rgSCardRawPci)
//
////////////////////////////////////////////////////////////////////////////////
//
// Service Manager Access Services
//
// The following services are used to manage user and terminal contexts for
// Smart Cards.
//
typedef ULONG SCARDCONTEXT;
typedef SCARDCONTEXT *PSCARDCONTEXT, *LPSCARDCONTEXT;
typedef ULONG SCARDHANDLE;
typedef SCARDHANDLE *PSCARDHANDLE, *LPSCARDHANDLE;
#define SCARD_AUTOALLOCATE (DWORD)(-1)
#define SCARD_SCOPE_USER 0 // The context is a user context, and any
// database operations are performed within the
// domain of the user.
#define SCARD_SCOPE_TERMINAL 1 // The context is that of the current terminal,
// and any database operations are performed
// within the domain of that terminal. (The
// calling application must have appropriate
// access permissions for any database actions.)
#define SCARD_SCOPE_SYSTEM 2 // The context is the system context, and any
// database operations are performed within the
// domain of the system. (The calling
// application must have appropriate access
// permissions for any database actions.)
extern WINSCARDAPI LONG WINAPI
SCardEstablishContext(
IN DWORD dwScope,
IN LPCVOID pvReserved1,
IN LPCVOID pvReserved2,
OUT LPSCARDCONTEXT phContext);
extern WINSCARDAPI LONG WINAPI
SCardReleaseContext(
IN SCARDCONTEXT hContext);
//
////////////////////////////////////////////////////////////////////////////////
//
// Smart Card Database Management Services
//
// The following services provide for managing the Smart Card Database.
//
static const TCHAR
SCARD_ALL_READERS[] = TEXT("SCard$AllReaders\000"),
SCARD_DEFAULT_READERS[] = TEXT("SCard$DefaultReaders\000"),
SCARD_LOCAL_READERS[] = TEXT("SCard$LocalReaders\000"),
SCARD_SYSTEM_READERS[] = TEXT("SCard$SystemReaders\000");
//
// Database Reader routines
//
extern WINSCARDAPI LONG WINAPI
SCardListReaderGroupsA(
IN SCARDCONTEXT hContext,
OUT LPSTR mszGroups,
IN OUT LPDWORD pcchGroups);
extern WINSCARDAPI LONG WINAPI
SCardListReaderGroupsW(
IN SCARDCONTEXT hContext,
OUT LPWSTR mszGroups,
IN OUT LPDWORD pcchGroups);
#ifdef UNICODE
#define SCardListReaderGroups SCardListReaderGroupsW
#else
#define SCardListReaderGroups SCardListReaderGroupsA
#endif // !UNICODE
extern WINSCARDAPI LONG WINAPI
SCardListReadersA(
IN SCARDCONTEXT hContext,
IN LPCSTR mszGroups,
OUT LPSTR mszReaders,
IN OUT LPDWORD pcchReaders);
extern WINSCARDAPI LONG WINAPI
SCardListReadersW(
IN SCARDCONTEXT hContext,
IN LPCWSTR mszGroups,
OUT LPWSTR mszReaders,
IN OUT LPDWORD pcchReaders);
#ifdef UNICODE
#define SCardListReaders SCardListReadersW
#else
#define SCardListReaders SCardListReadersA
#endif // !UNICODE
extern WINSCARDAPI LONG WINAPI
SCardListCardsA(
IN SCARDCONTEXT hContext,
IN LPCBYTE pbAtr,
IN LPCGUID rgquidInterfaces,
IN DWORD cguidInterfaceCount,
OUT LPSTR mszCards,
IN OUT LPDWORD pcchCards);
extern WINSCARDAPI LONG WINAPI
SCardListCardsW(
IN SCARDCONTEXT hContext,
IN LPCBYTE pbAtr,
IN LPCGUID rgquidInterfaces,
IN DWORD cguidInterfaceCount,
OUT LPWSTR mszCards,
IN OUT LPDWORD pcchCards);
#ifdef UNICODE
#define SCardListCards SCardListCardsW
#else
#define SCardListCards SCardListCardsA
#endif // !UNICODE
extern WINSCARDAPI LONG WINAPI
SCardListInterfacesA(
IN SCARDCONTEXT hContext,
IN LPCSTR szCard,
OUT LPGUID pguidInterfaces,
IN OUT LPDWORD pcguidInterfaces);
extern WINSCARDAPI LONG WINAPI
SCardListInterfacesW(
IN SCARDCONTEXT hContext,
IN LPCWSTR szCard,
OUT LPGUID pguidInterfaces,
IN OUT LPDWORD pcguidInterfaces);
#ifdef UNICODE
#define SCardListInterfaces SCardListInterfacesW
#else
#define SCardListInterfaces SCardListInterfacesA
#endif // !UNICODE
extern WINSCARDAPI LONG WINAPI
SCardGetProviderIdA(
IN SCARDCONTEXT hContext,
IN LPCSTR szCard,
OUT LPGUID pguidProviderId);
extern WINSCARDAPI LONG WINAPI
SCardGetProviderIdW(
IN SCARDCONTEXT hContext,
IN LPCWSTR szCard,
OUT LPGUID pguidProviderId);
#ifdef UNICODE
#define SCardGetProviderId SCardGetProviderIdW
#else
#define SCardGetProviderId SCardGetProviderIdA
#endif // !UNICODE
//
// Database Writer routines
//
extern WINSCARDAPI LONG WINAPI
SCardIntroduceReaderGroupA(
IN SCARDCONTEXT hContext,
IN LPCSTR szGroupName);
extern WINSCARDAPI LONG WINAPI
SCardIntroduceReaderGroupW(
IN SCARDCONTEXT hContext,
IN LPCWSTR szGroupName);
#ifdef UNICODE
#define SCardIntroduceReaderGroup SCardIntroduceReaderGroupW
#else
#define SCardIntroduceReaderGroup SCardIntroduceReaderGroupA
#endif // !UNICODE
extern WINSCARDAPI LONG WINAPI
SCardForgetReaderGroupA(
IN SCARDCONTEXT hContext,
IN LPCSTR szGroupName);
extern WINSCARDAPI LONG WINAPI
SCardForgetReaderGroupW(
IN SCARDCONTEXT hContext,
IN LPCWSTR szGroupName);
#ifdef UNICODE
#define SCardForgetReaderGroup SCardForgetReaderGroupW
#else
#define SCardForgetReaderGroup SCardForgetReaderGroupA
#endif // !UNICODE
extern WINSCARDAPI LONG WINAPI
SCardIntroduceReaderA(
IN SCARDCONTEXT hContext,
IN LPCSTR szReaderName,
IN LPCSTR szDeviceName);
extern WINSCARDAPI LONG WINAPI
SCardIntroduceReaderW(
IN SCARDCONTEXT hContext,
IN LPCWSTR szReaderName,
IN LPCWSTR szDeviceName);
#ifdef UNICODE
#define SCardIntroduceReader SCardIntroduceReaderW
#else
#define SCardIntroduceReader SCardIntroduceReaderA
#endif // !UNICODE
extern WINSCARDAPI LONG WINAPI
SCardForgetReaderA(
IN SCARDCONTEXT hContext,
IN LPCSTR szReaderName);
extern WINSCARDAPI LONG WINAPI
SCardForgetReaderW(
IN SCARDCONTEXT hContext,
IN LPCWSTR szReaderName);
#ifdef UNICODE
#define SCardForgetReader SCardForgetReaderW
#else
#define SCardForgetReader SCardForgetReaderA
#endif // !UNICODE
extern WINSCARDAPI LONG WINAPI
SCardAddReaderToGroupA(
IN SCARDCONTEXT hContext,
IN LPCSTR szReaderName,
IN LPCSTR szGroupName);
extern WINSCARDAPI LONG WINAPI
SCardAddReaderToGroupW(
IN SCARDCONTEXT hContext,
IN LPCWSTR szReaderName,
IN LPCWSTR szGroupName);
#ifdef UNICODE
#define SCardAddReaderToGroup SCardAddReaderToGroupW
#else
#define SCardAddReaderToGroup SCardAddReaderToGroupA
#endif // !UNICODE
extern WINSCARDAPI LONG WINAPI
SCardRemoveReaderFromGroupA(
IN SCARDCONTEXT hContext,
IN LPCSTR szReaderName,
IN LPCSTR szGroupName);
extern WINSCARDAPI LONG WINAPI
SCardRemoveReaderFromGroupW(
IN SCARDCONTEXT hContext,
IN LPCWSTR szReaderName,
IN LPCWSTR szGroupName);
#ifdef UNICODE
#define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupW
#else
#define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupA
#endif // !UNICODE
extern WINSCARDAPI LONG WINAPI
SCardIntroduceCardTypeA(
IN SCARDCONTEXT hContext,
IN LPCSTR szCardName,
IN LPGUID pguidPrimaryProvider,
IN LPGUID rgguidInterfaces,
IN DWORD dwInterfaceCount,
IN LPCBYTE pbAtr,
IN LPCBYTE pbAtrMask,
IN DWORD cbAtrLen);
extern WINSCARDAPI LONG WINAPI
SCardIntroduceCardTypeW(
IN SCARDCONTEXT hContext,
IN LPCWSTR szCardName,
IN LPGUID pguidPrimaryProvider,
IN LPGUID rgguidInterfaces,
IN DWORD dwInterfaceCount,
IN LPCBYTE pbAtr,
IN LPCBYTE pbAtrMask,
IN DWORD cbAtrLen);
#ifdef UNICODE
#define SCardIntroduceCardType SCardIntroduceCardTypeW
#else
#define SCardIntroduceCardType SCardIntroduceCardTypeA
#endif // !UNICODE
extern WINSCARDAPI LONG WINAPI
SCardForgetCardTypeA(
IN SCARDCONTEXT hContext,
IN LPCSTR szCardName);
extern WINSCARDAPI LONG WINAPI
SCardForgetCardTypeW(
IN SCARDCONTEXT hContext,
IN LPCWSTR szCardName);
#ifdef UNICODE
#define SCardForgetCardType SCardForgetCardTypeW
#else
#define SCardForgetCardType SCardForgetCardTypeA
#endif // !UNICODE
//
////////////////////////////////////////////////////////////////////////////////
//
// Service Manager Support Routines
//
// The following services are supplied to simplify the use of the Service
// Manager API.
//
extern WINSCARDAPI LONG WINAPI
SCardFreeMemory(
IN SCARDCONTEXT hContext,
IN LPVOID pvMem);
//
////////////////////////////////////////////////////////////////////////////////
//
// Reader Services
//
// The following services supply means for tracking cards within readers.
//
typedef struct {
LPCSTR szReader; // reader name
LPVOID pvUserData; // user defined data
DWORD dwCurrentState; // current state of reader at time of call
DWORD dwEventState; // state of reader after state change
DWORD cbAtr; // Number of bytes in the returned ATR.
BYTE rgbAtr[36]; // Atr of inserted card, (extra alignment bytes)
} SCARD_READERSTATE_A;
typedef SCARD_READERSTATE_A *PSCARD_READERSTATE_A, *LPSCARD_READERSTATE_A;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -