| winscard.h (6.1.7600.16385-Windows_7.0) | | winscard.h (6.3.9600.17415-Windows_8.1) |
| | |
| skipping to change at line 36 | | skipping to change at line 36 |
| #if defined (_MSC_VER) && (_MSC_VER >= 1020) | | #if defined (_MSC_VER) && (_MSC_VER >= 1020) |
| #pragma once | | #pragma once |
| #endif | | #endif |
| | |
| #include <wtypes.h> | | #include <wtypes.h> |
| #include <winioctl.h> | | #include <winioctl.h> |
| #include "winsmcrd.h" | | #include "winsmcrd.h" |
| #ifndef SCARD_S_SUCCESS | | #ifndef SCARD_S_SUCCESS |
| #include "SCardErr.h" | | #include "SCardErr.h" |
| #endif | | #endif |
|
| | #include <winapifamily.h> |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| extern "C" { | | extern "C" { |
| #endif | | #endif |
| | |
|
| | #pragma region Desktop Family |
| | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) |
| | |
| #ifndef _LPCBYTE_DEFINED | | #ifndef _LPCBYTE_DEFINED |
| #define _LPCBYTE_DEFINED | | #define _LPCBYTE_DEFINED |
| typedef const BYTE *LPCBYTE; | | typedef const BYTE *LPCBYTE; |
| #endif | | #endif |
| #ifndef _LPCVOID_DEFINED | | #ifndef _LPCVOID_DEFINED |
| #define _LPCVOID_DEFINED | | #define _LPCVOID_DEFINED |
| typedef const VOID *LPCVOID; | | typedef const VOID *LPCVOID; |
| #endif | | #endif |
| | |
| #ifndef WINSCARDAPI | | #ifndef WINSCARDAPI |
| | |
| skipping to change at line 104 | | skipping to change at line 108 |
| // calling application must have appropriate | | // calling application must have appropriate |
| // access permissions for any database actions.) | | // access permissions for any database actions.) |
| #define SCARD_SCOPE_SYSTEM 2 // The context is the system context, and any | | #define SCARD_SCOPE_SYSTEM 2 // The context is the system context, and any |
| // database operations are performed within the | | // database operations are performed within the |
| // domain of the system. (The calling | | // domain of the system. (The calling |
| // application must have appropriate access | | // application must have appropriate access |
| // permissions for any database actions.) | | // permissions for any database actions.) |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardEstablishContext( | | SCardEstablishContext( |
|
| __in DWORD dwScope, | | _In_ DWORD dwScope, |
| __reserved LPCVOID pvReserved1, | | _Reserved_ LPCVOID pvReserved1, |
| __reserved LPCVOID pvReserved2, | | _Reserved_ LPCVOID pvReserved2, |
| __out LPSCARDCONTEXT phContext); | | _Out_ LPSCARDCONTEXT phContext); |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardReleaseContext( | | SCardReleaseContext( |
|
| __in SCARDCONTEXT hContext); | | _In_ SCARDCONTEXT hContext); |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardIsValidContext( | | SCardIsValidContext( |
|
| __in SCARDCONTEXT hContext); | | _In_ SCARDCONTEXT hContext); |
| | |
| // | | // |
| //////////////////////////////////////////////////////////////////////////////// | | //////////////////////////////////////////////////////////////////////////////// |
| // | | // |
| // Smart Card Database Management Services | | // Smart Card Database Management Services |
| // | | // |
| // The following services provide for managing the Smart Card Database. | | // The following services provide for managing the Smart Card Database. |
| // | | // |
| | |
| #define SCARD_ALL_READERS TEXT("SCard$AllReaders\000") | | #define SCARD_ALL_READERS TEXT("SCard$AllReaders\000") |
| | |
| skipping to change at line 140 | | skipping to change at line 144 |
| #define SCARD_PROVIDER_PRIMARY 1 // Primary Provider Id | | #define SCARD_PROVIDER_PRIMARY 1 // Primary Provider Id |
| #define SCARD_PROVIDER_CSP 2 // Crypto Service Provider Id | | #define SCARD_PROVIDER_CSP 2 // Crypto Service Provider Id |
| #define SCARD_PROVIDER_KSP 3 // Key Storage Provider Id | | #define SCARD_PROVIDER_KSP 3 // Key Storage Provider Id |
| | |
| // | | // |
| // Database Reader routines | | // Database Reader routines |
| // | | // |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardListReaderGroupsA( | | SCardListReaderGroupsA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __nullnullterminated __out_ecount_opt(*pcchGroups) LPSTR mszGroups, | | _Out_writes_opt_(*pcchGroups) _Post_ _NullNull_terminated_ LPSTR mszGroups, |
| __inout LPDWORD pcchGroups); | | _Inout_ LPDWORD pcchGroups); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardListReaderGroupsW( | | SCardListReaderGroupsW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __nullnullterminated __out_ecount_opt(*pcchGroups) LPWSTR mszGroups, | | _Out_writes_opt_(*pcchGroups) _Post_ _NullNull_terminated_ LPWSTR mszGroups |
| __inout LPDWORD pcchGroups); | | , |
| | _Inout_ LPDWORD pcchGroups); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardListReaderGroups SCardListReaderGroupsW | | #define SCardListReaderGroups SCardListReaderGroupsW |
| #else | | #else |
| #define SCardListReaderGroups SCardListReaderGroupsA | | #define SCardListReaderGroups SCardListReaderGroupsA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
|
| | _Success_(return == SCARD_S_SUCCESS) |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardListReadersA( | | SCardListReadersA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in_opt LPCSTR mszGroups, | | _In_opt_ LPCSTR mszGroups, |
| __nullnullterminated __out_ecount_opt(*pcchReaders) LPSTR mszReaders, | | _When_(_Old_(*pcchReaders) == SCARD_AUTOALLOCATE, _At_((LPSTR *)mszReaders, |
| __inout LPDWORD pcchReaders); | | _Outptr_result_buffer_maybenull_(*pcchReaders) _At_(*_Curr_, _Post_z_ _Post_ _Nu |
| | llNull_terminated_))) |
| | _When_(_Old_(*pcchReaders) != SCARD_AUTOALLOCATE, _Out_writes_opt_(*pcchRead |
| | ers) _Post_ _NullNull_terminated_) |
| | LPSTR mszReaders, |
| | _Inout_ LPDWORD pcchReaders); |
| | _Success_(return == SCARD_S_SUCCESS) |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardListReadersW( | | SCardListReadersW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in_opt LPCWSTR mszGroups, | | _In_opt_ LPCWSTR mszGroups, |
| __nullnullterminated __out_ecount_opt(*pcchReaders) LPWSTR mszReaders, | | _When_(_Old_(*pcchReaders) == SCARD_AUTOALLOCATE, _At_((LPWSTR *)mszReaders, |
| __inout LPDWORD pcchReaders); | | _Outptr_result_buffer_maybenull_(*pcchReaders) _At_(*_Curr_, _Post_z_ _Post_ _N |
| | ullNull_terminated_))) |
| | _When_(_Old_(*pcchReaders) != SCARD_AUTOALLOCATE, _Out_writes_opt_(*pcchRead |
| | ers) _Post_ _NullNull_terminated_) |
| | LPWSTR mszReaders, |
| | _Inout_ LPDWORD pcchReaders); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardListReaders SCardListReadersW | | #define SCardListReaders SCardListReadersW |
| #else | | #else |
| #define SCardListReaders SCardListReadersA | | #define SCardListReaders SCardListReadersA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
|
| | _Success_(return == SCARD_S_SUCCESS) |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardListCardsA( | | SCardListCardsA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in_opt LPCBYTE pbAtr, | | _In_opt_ LPCBYTE pbAtr, |
| __in_ecount_opt(cguidInterfaceCount) LPCGUID rgquidInterfaces, | | _In_reads_opt_(cguidInterfaceCount) LPCGUID rgquidInterfaces, |
| __in DWORD cguidInterfaceCount, | | _In_ DWORD cguidInterfaceCount, |
| __nullnullterminated __out_ecount_opt(*pcchCards) LPSTR mszCards, | | _When_(_Old_(*pcchCards) == SCARD_AUTOALLOCATE, _At_((LPSTR *)mszCards, _Out |
| __inout LPDWORD pcchCards); | | ptr_result_buffer_maybenull_(*pcchCards) _At_(*_Curr_, _Post_z_))) |
| | _When_(_Old_(*pcchCards) != SCARD_AUTOALLOCATE, _Out_writes_opt_z_(*pcchCard |
| | s)) |
| | CHAR *mszCards, |
| | _Inout_ LPDWORD pcchCards); |
| | _Success_(return == SCARD_S_SUCCESS) |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardListCardsW( | | SCardListCardsW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in_opt LPCBYTE pbAtr, | | _In_opt_ LPCBYTE pbAtr, |
| __in_ecount_opt(cguidInterfaceCount) LPCGUID rgquidInterfaces, | | _In_reads_opt_(cguidInterfaceCount) LPCGUID rgquidInterfaces, |
| __in DWORD cguidInterfaceCount, | | _In_ DWORD cguidInterfaceCount, |
| __nullnullterminated __out_ecount_opt(*pcchCards) LPWSTR mszCards, | | _When_(_Old_(*pcchCards) == SCARD_AUTOALLOCATE, _At_((LPWSTR *)mszCards, _Ou |
| __inout LPDWORD pcchCards); | | tptr_result_buffer_maybenull_(*pcchCards) _At_(*_Curr_, _Post_z_))) |
| | _When_(_Old_(*pcchCards) != SCARD_AUTOALLOCATE, _Out_writes_opt_z_(*pcchCard |
| | s)) |
| | WCHAR *mszCards, |
| | _Inout_ LPDWORD pcchCards); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardListCards SCardListCardsW | | #define SCardListCards SCardListCardsW |
| #else | | #else |
| #define SCardListCards SCardListCardsA | | #define SCardListCards SCardListCardsA |
| #endif // !UNICODE | | #endif // !UNICODE |
| // | | // |
| // NOTE: The routine SCardListCards name differs from the PC/SC definition. | | // NOTE: The routine SCardListCards name differs from the PC/SC definition. |
| // It should be: | | // It should be: |
| // | | // |
| // extern WINSCARDAPI LONG WINAPI | | // extern WINSCARDAPI LONG WINAPI |
| // SCardListCardTypes( | | // SCardListCardTypes( |
|
| // __in SCARDCONTEXT hContext, | | // _In_ SCARDCONTEXT hContext, |
| // __in_opt LPCBYTE pbAtr, | | // _In_opt_ LPCBYTE pbAtr, |
| // __in_opt LPCGUID rgquidInterfaces, | | // _In_opt_ LPCGUID rgquidInterfaces, |
| // __in DWORD cguidInterfaceCount, | | // _In_ DWORD cguidInterfaceCount, |
| // __out_opt LPTSTR mszCards, | | // _Out_opt_ LPTSTR mszCards, |
| // __inout LPDWORD pcchCards); | | // _Inout_ LPDWORD pcchCards); |
| // | | // |
| // Here's a work-around MACRO: | | // Here's a work-around MACRO: |
| #define SCardListCardTypes SCardListCards | | #define SCardListCardTypes SCardListCards |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardListInterfacesA( | | SCardListInterfacesA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szCard, | | _In_ LPCSTR szCard, |
| __out LPGUID pguidInterfaces, | | _Out_ LPGUID pguidInterfaces, |
| __inout LPDWORD pcguidInterfaces); | | _Inout_ LPDWORD pcguidInterfaces); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardListInterfacesW( | | SCardListInterfacesW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szCard, | | _In_ LPCWSTR szCard, |
| __out LPGUID pguidInterfaces, | | _Out_ LPGUID pguidInterfaces, |
| __inout LPDWORD pcguidInterfaces); | | _Inout_ LPDWORD pcguidInterfaces); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardListInterfaces SCardListInterfacesW | | #define SCardListInterfaces SCardListInterfacesW |
| #else | | #else |
| #define SCardListInterfaces SCardListInterfacesA | | #define SCardListInterfaces SCardListInterfacesA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardGetProviderIdA( | | SCardGetProviderIdA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szCard, | | _In_ LPCSTR szCard, |
| __out LPGUID pguidProviderId); | | _Out_ LPGUID pguidProviderId); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardGetProviderIdW( | | SCardGetProviderIdW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szCard, | | _In_ LPCWSTR szCard, |
| __out LPGUID pguidProviderId); | | _Out_ LPGUID pguidProviderId); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardGetProviderId SCardGetProviderIdW | | #define SCardGetProviderId SCardGetProviderIdW |
| #else | | #else |
| #define SCardGetProviderId SCardGetProviderIdA | | #define SCardGetProviderId SCardGetProviderIdA |
| #endif // !UNICODE | | #endif // !UNICODE |
| // | | // |
| // NOTE: The routine SCardGetProviderId in this implementation uses GUIDs. | | // NOTE: The routine SCardGetProviderId in this implementation uses GUIDs. |
| // The PC/SC definition uses BYTEs. | | // The PC/SC definition uses BYTEs. |
| // | | // |
| | |
|
| | _Success_(return == SCARD_S_SUCCESS) |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardGetCardTypeProviderNameA( | | SCardGetCardTypeProviderNameA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szCardName, | | _In_ LPCSTR szCardName, |
| __in DWORD dwProviderId, | | _In_ DWORD dwProviderId, |
| __out_ecount_opt(*pcchProvider) LPSTR szProvider, | | _When_(_Old_(*pcchProvider) == SCARD_AUTOALLOCATE, _At_((LPSTR *)szProvider, |
| __inout LPDWORD pcchProvider); | | _Outptr_result_buffer_all_(*pcchProvider))) |
| | _When_(_Old_(*pcchProvider) != SCARD_AUTOALLOCATE, _Out_writes_to_(*pcchProv |
| | ider, *pcchProvider) _Post_z_) |
| | CHAR *szProvider, |
| | _Inout_ LPDWORD pcchProvider); |
| | _Success_(return == SCARD_S_SUCCESS) |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardGetCardTypeProviderNameW( | | SCardGetCardTypeProviderNameW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szCardName, | | _In_ LPCWSTR szCardName, |
| __in DWORD dwProviderId, | | _In_ DWORD dwProviderId, |
| __out_ecount_opt(*pcchProvider) LPWSTR szProvider, | | _When_(_Old_(*pcchProvider) == SCARD_AUTOALLOCATE, _At_((LPWSTR *)szProvider |
| __inout LPDWORD pcchProvider); | | , _Outptr_result_buffer_all_(*pcchProvider))) |
| | _When_(_Old_(*pcchProvider) != SCARD_AUTOALLOCATE, _Out_writes_to_(*pcchProv |
| | ider, *pcchProvider) _Post_z_) |
| | WCHAR *szProvider, |
| | _Inout_ LPDWORD pcchProvider); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardGetCardTypeProviderName SCardGetCardTypeProviderNameW | | #define SCardGetCardTypeProviderName SCardGetCardTypeProviderNameW |
| #else | | #else |
| #define SCardGetCardTypeProviderName SCardGetCardTypeProviderNameA | | #define SCardGetCardTypeProviderName SCardGetCardTypeProviderNameA |
| #endif // !UNICODE | | #endif // !UNICODE |
| // | | // |
| // NOTE: This routine is an extension to the PC/SC definitions. | | // NOTE: This routine is an extension to the PC/SC definitions. |
| // | | // |
| | |
| // | | // |
| // Database Writer routines | | // Database Writer routines |
| // | | // |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardIntroduceReaderGroupA( | | SCardIntroduceReaderGroupA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szGroupName); | | _In_ LPCSTR szGroupName); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardIntroduceReaderGroupW( | | SCardIntroduceReaderGroupW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szGroupName); | | _In_ LPCWSTR szGroupName); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardIntroduceReaderGroup SCardIntroduceReaderGroupW | | #define SCardIntroduceReaderGroup SCardIntroduceReaderGroupW |
| #else | | #else |
| #define SCardIntroduceReaderGroup SCardIntroduceReaderGroupA | | #define SCardIntroduceReaderGroup SCardIntroduceReaderGroupA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardForgetReaderGroupA( | | SCardForgetReaderGroupA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szGroupName); | | _In_ LPCSTR szGroupName); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardForgetReaderGroupW( | | SCardForgetReaderGroupW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szGroupName); | | _In_ LPCWSTR szGroupName); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardForgetReaderGroup SCardForgetReaderGroupW | | #define SCardForgetReaderGroup SCardForgetReaderGroupW |
| #else | | #else |
| #define SCardForgetReaderGroup SCardForgetReaderGroupA | | #define SCardForgetReaderGroup SCardForgetReaderGroupA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardIntroduceReaderA( | | SCardIntroduceReaderA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szReaderName, | | _In_ LPCSTR szReaderName, |
| __in LPCSTR szDeviceName); | | _In_ LPCSTR szDeviceName); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardIntroduceReaderW( | | SCardIntroduceReaderW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szReaderName, | | _In_ LPCWSTR szReaderName, |
| __in LPCWSTR szDeviceName); | | _In_ LPCWSTR szDeviceName); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardIntroduceReader SCardIntroduceReaderW | | #define SCardIntroduceReader SCardIntroduceReaderW |
| #else | | #else |
| #define SCardIntroduceReader SCardIntroduceReaderA | | #define SCardIntroduceReader SCardIntroduceReaderA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardForgetReaderA( | | SCardForgetReaderA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szReaderName); | | _In_ LPCSTR szReaderName); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardForgetReaderW( | | SCardForgetReaderW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szReaderName); | | _In_ LPCWSTR szReaderName); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardForgetReader SCardForgetReaderW | | #define SCardForgetReader SCardForgetReaderW |
| #else | | #else |
| #define SCardForgetReader SCardForgetReaderA | | #define SCardForgetReader SCardForgetReaderA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardAddReaderToGroupA( | | SCardAddReaderToGroupA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szReaderName, | | _In_ LPCSTR szReaderName, |
| __in LPCSTR szGroupName); | | _In_ LPCSTR szGroupName); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardAddReaderToGroupW( | | SCardAddReaderToGroupW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szReaderName, | | _In_ LPCWSTR szReaderName, |
| __in LPCWSTR szGroupName); | | _In_ LPCWSTR szGroupName); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardAddReaderToGroup SCardAddReaderToGroupW | | #define SCardAddReaderToGroup SCardAddReaderToGroupW |
| #else | | #else |
| #define SCardAddReaderToGroup SCardAddReaderToGroupA | | #define SCardAddReaderToGroup SCardAddReaderToGroupA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardRemoveReaderFromGroupA( | | SCardRemoveReaderFromGroupA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szReaderName, | | _In_ LPCSTR szReaderName, |
| __in LPCSTR szGroupName); | | _In_ LPCSTR szGroupName); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardRemoveReaderFromGroupW( | | SCardRemoveReaderFromGroupW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szReaderName, | | _In_ LPCWSTR szReaderName, |
| __in LPCWSTR szGroupName); | | _In_ LPCWSTR szGroupName); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupW | | #define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupW |
| #else | | #else |
| #define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupA | | #define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardIntroduceCardTypeA( | | SCardIntroduceCardTypeA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szCardName, | | _In_ LPCSTR szCardName, |
| __in_opt LPCGUID pguidPrimaryProvider, | | _In_opt_ LPCGUID pguidPrimaryProvider, |
| __in_opt LPCGUID rgguidInterfaces, | | _In_opt_ LPCGUID rgguidInterfaces, |
| __in DWORD dwInterfaceCount, | | _In_ DWORD dwInterfaceCount, |
| __in LPCBYTE pbAtr, | | _In_ LPCBYTE pbAtr, |
| __in LPCBYTE pbAtrMask, | | _In_ LPCBYTE pbAtrMask, |
| __in DWORD cbAtrLen); | | _In_ DWORD cbAtrLen); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardIntroduceCardTypeW( | | SCardIntroduceCardTypeW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szCardName, | | _In_ LPCWSTR szCardName, |
| __in_opt LPCGUID pguidPrimaryProvider, | | _In_opt_ LPCGUID pguidPrimaryProvider, |
| __in_opt LPCGUID rgguidInterfaces, | | _In_opt_ LPCGUID rgguidInterfaces, |
| __in DWORD dwInterfaceCount, | | _In_ DWORD dwInterfaceCount, |
| __in LPCBYTE pbAtr, | | _In_ LPCBYTE pbAtr, |
| __in LPCBYTE pbAtrMask, | | _In_ LPCBYTE pbAtrMask, |
| __in DWORD cbAtrLen); | | _In_ DWORD cbAtrLen); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardIntroduceCardType SCardIntroduceCardTypeW | | #define SCardIntroduceCardType SCardIntroduceCardTypeW |
| #else | | #else |
| #define SCardIntroduceCardType SCardIntroduceCardTypeA | | #define SCardIntroduceCardType SCardIntroduceCardTypeA |
| #endif // !UNICODE | | #endif // !UNICODE |
| // | | // |
| // NOTE: The routine SCardIntroduceCardType's parameters' order differs from | | // NOTE: The routine SCardIntroduceCardType's parameters' order differs from |
| // the PC/SC definition. It should be: | | // the PC/SC definition. It should be: |
| // | | // |
| // extern WINSCARDAPI LONG WINAPI | | // extern WINSCARDAPI LONG WINAPI |
| // SCardIntroduceCardType( | | // SCardIntroduceCardType( |
|
| // __in SCARDCONTEXT hContext, | | // _In_ SCARDCONTEXT hContext, |
| // __in LPCTSTR szCardName, | | // _In_ LPCTSTR szCardName, |
| // __in LPCBYTE pbAtr, | | // _In_ LPCBYTE pbAtr, |
| // __in LPCBYTE pbAtrMask, | | // _In_ LPCBYTE pbAtrMask, |
| // __in DWORD cbAtrLen, | | // _In_ DWORD cbAtrLen, |
| // __in_opt LPCGUID pguidPrimaryProvider, | | // _In_opt_ LPCGUID pguidPrimaryProvider, |
| // __in_opt LPCGUID rgguidInterfaces, | | // _In_opt_ LPCGUID rgguidInterfaces, |
| // __in DWORD dwInterfaceCount); | | // _In_ DWORD dwInterfaceCount); |
| // | | // |
| // Here's a work-around MACRO: | | // Here's a work-around MACRO: |
| #define PCSCardIntroduceCardType(hContext, szCardName, pbAtr, pbAtrMask, cbAtrLe
n, pguidPrimaryProvider, rgguidInterfaces, dwInterfaceCount) \ | | #define PCSCardIntroduceCardType(hContext, szCardName, pbAtr, pbAtrMask, cbAtrLe
n, pguidPrimaryProvider, rgguidInterfaces, dwInterfaceCount) \ |
| SCardIntroduceCardType(hContext, szCardName, pguidPrimaryProvider, rgg
uidInterfaces, dwInterfaceCount, pbAtr, pbAtrMask, cbAtrLen) | | SCardIntroduceCardType(hContext, szCardName, pguidPrimaryProvider, rgg
uidInterfaces, dwInterfaceCount, pbAtr, pbAtrMask, cbAtrLen) |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardSetCardTypeProviderNameA( | | SCardSetCardTypeProviderNameA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szCardName, | | _In_ LPCSTR szCardName, |
| __in DWORD dwProviderId, | | _In_ DWORD dwProviderId, |
| __in LPCSTR szProvider); | | _In_ LPCSTR szProvider); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardSetCardTypeProviderNameW( | | SCardSetCardTypeProviderNameW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szCardName, | | _In_ LPCWSTR szCardName, |
| __in DWORD dwProviderId, | | _In_ DWORD dwProviderId, |
| __in LPCWSTR szProvider); | | _In_ LPCWSTR szProvider); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardSetCardTypeProviderName SCardSetCardTypeProviderNameW | | #define SCardSetCardTypeProviderName SCardSetCardTypeProviderNameW |
| #else | | #else |
| #define SCardSetCardTypeProviderName SCardSetCardTypeProviderNameA | | #define SCardSetCardTypeProviderName SCardSetCardTypeProviderNameA |
| #endif // !UNICODE | | #endif // !UNICODE |
| // | | // |
| // NOTE: This routine is an extention to the PC/SC specifications. | | // NOTE: This routine is an extention to the PC/SC specifications. |
| // | | // |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardForgetCardTypeA( | | SCardForgetCardTypeA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szCardName); | | _In_ LPCSTR szCardName); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardForgetCardTypeW( | | SCardForgetCardTypeW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szCardName); | | _In_ LPCWSTR szCardName); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardForgetCardType SCardForgetCardTypeW | | #define SCardForgetCardType SCardForgetCardTypeW |
| #else | | #else |
| #define SCardForgetCardType SCardForgetCardTypeA | | #define SCardForgetCardType SCardForgetCardTypeA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| // | | // |
| //////////////////////////////////////////////////////////////////////////////// | | //////////////////////////////////////////////////////////////////////////////// |
| // | | // |
| // Service Manager Support Routines | | // Service Manager Support Routines |
| // | | // |
| // The following services are supplied to simplify the use of the Service | | // The following services are supplied to simplify the use of the Service |
| // Manager API. | | // Manager API. |
| // | | // |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardFreeMemory( | | SCardFreeMemory( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCVOID pvMem); | | _In_ LPCVOID pvMem); |
| | |
| #if (NTDDI_VERSION >= NTDDI_WINXP) | | #if (NTDDI_VERSION >= NTDDI_WINXP) |
| extern WINSCARDAPI HANDLE WINAPI | | extern WINSCARDAPI HANDLE WINAPI |
| SCardAccessStartedEvent(void); | | SCardAccessStartedEvent(void); |
| | |
| extern WINSCARDAPI void WINAPI | | extern WINSCARDAPI void WINAPI |
| SCardReleaseStartedEvent(void); | | SCardReleaseStartedEvent(void); |
| #endif // (NTDDI_VERSION >= NTDDI_WINXP) | | #endif // (NTDDI_VERSION >= NTDDI_WINXP) |
| | |
| // | | // |
| | |
| skipping to change at line 571 | | skipping to change at line 593 |
| // set. | | // set. |
| #define SCARD_STATE_MUTE 0x00000200 // This implies that the card in the | | #define SCARD_STATE_MUTE 0x00000200 // This implies that the card in the |
| // reader is unresponsive or not | | // reader is unresponsive or not |
| // supported by the reader or | | // supported by the reader or |
| // software. | | // software. |
| #define SCARD_STATE_UNPOWERED 0x00000400 // This implies that the card in the | | #define SCARD_STATE_UNPOWERED 0x00000400 // This implies that the card in the |
| // reader has not been powered up. | | // reader has not been powered up. |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardLocateCardsA( | | SCardLocateCardsA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR mszCards, | | _In_ LPCSTR mszCards, |
| __inout LPSCARD_READERSTATEA rgReaderStates, | | _Inout_ LPSCARD_READERSTATEA rgReaderStates, |
| __in DWORD cReaders); | | _In_ DWORD cReaders); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardLocateCardsW( | | SCardLocateCardsW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR mszCards, | | _In_ LPCWSTR mszCards, |
| __inout LPSCARD_READERSTATEW rgReaderStates, | | _Inout_ LPSCARD_READERSTATEW rgReaderStates, |
| __in DWORD cReaders); | | _In_ DWORD cReaders); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardLocateCards SCardLocateCardsW | | #define SCardLocateCards SCardLocateCardsW |
| #else | | #else |
| #define SCardLocateCards SCardLocateCardsA | | #define SCardLocateCards SCardLocateCardsA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| #if (NTDDI_VERSION >= NTDDI_WINXP) | | #if (NTDDI_VERSION >= NTDDI_WINXP) |
| typedef struct _SCARD_ATRMASK { | | typedef struct _SCARD_ATRMASK { |
| DWORD cbAtr; // Number of bytes in the ATR and the mask. | | DWORD cbAtr; // Number of bytes in the ATR and the mask. |
| BYTE rgbAtr[36]; // Atr of card (extra alignment bytes) | | BYTE rgbAtr[36]; // Atr of card (extra alignment bytes) |
| BYTE rgbMask[36]; // Mask for the Atr (extra alignment bytes) | | BYTE rgbMask[36]; // Mask for the Atr (extra alignment bytes) |
| } SCARD_ATRMASK, *PSCARD_ATRMASK, *LPSCARD_ATRMASK; | | } SCARD_ATRMASK, *PSCARD_ATRMASK, *LPSCARD_ATRMASK; |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardLocateCardsByATRA( | | SCardLocateCardsByATRA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPSCARD_ATRMASK rgAtrMasks, | | _In_ LPSCARD_ATRMASK rgAtrMasks, |
| __in DWORD cAtrs, | | _In_ DWORD cAtrs, |
| __inout LPSCARD_READERSTATEA rgReaderStates, | | _Inout_ LPSCARD_READERSTATEA rgReaderStates, |
| __in DWORD cReaders); | | _In_ DWORD cReaders); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardLocateCardsByATRW( | | SCardLocateCardsByATRW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPSCARD_ATRMASK rgAtrMasks, | | _In_ LPSCARD_ATRMASK rgAtrMasks, |
| __in DWORD cAtrs, | | _In_ DWORD cAtrs, |
| __inout LPSCARD_READERSTATEW rgReaderStates, | | _Inout_ LPSCARD_READERSTATEW rgReaderStates, |
| __in DWORD cReaders); | | _In_ DWORD cReaders); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardLocateCardsByATR SCardLocateCardsByATRW | | #define SCardLocateCardsByATR SCardLocateCardsByATRW |
| #else | | #else |
| #define SCardLocateCardsByATR SCardLocateCardsByATRA | | #define SCardLocateCardsByATR SCardLocateCardsByATRA |
| #endif // !UNICODE | | #endif // !UNICODE |
| #endif // (NTDDI_VERSION >= NTDDI_WINXP) | | #endif // (NTDDI_VERSION >= NTDDI_WINXP) |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardGetStatusChangeA( | | SCardGetStatusChangeA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in DWORD dwTimeout, | | _In_ DWORD dwTimeout, |
| __inout LPSCARD_READERSTATEA rgReaderStates, | | _Inout_ LPSCARD_READERSTATEA rgReaderStates, |
| __in DWORD cReaders); | | _In_ DWORD cReaders); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardGetStatusChangeW( | | SCardGetStatusChangeW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in DWORD dwTimeout, | | _In_ DWORD dwTimeout, |
| __inout LPSCARD_READERSTATEW rgReaderStates, | | _Inout_ LPSCARD_READERSTATEW rgReaderStates, |
| __in DWORD cReaders); | | _In_ DWORD cReaders); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardGetStatusChange SCardGetStatusChangeW | | #define SCardGetStatusChange SCardGetStatusChangeW |
| #else | | #else |
| #define SCardGetStatusChange SCardGetStatusChangeA | | #define SCardGetStatusChange SCardGetStatusChangeA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardCancel( | | SCardCancel( |
|
| __in SCARDCONTEXT hContext); | | _In_ SCARDCONTEXT hContext); |
| | |
| // | | // |
| //////////////////////////////////////////////////////////////////////////////// | | //////////////////////////////////////////////////////////////////////////////// |
| // | | // |
| // Card/Reader Communication Services | | // Card/Reader Communication Services |
| // | | // |
| // The following services provide means for communication with the card. | | // The following services provide means for communication with the card. |
| // | | // |
| | |
| #define SCARD_SHARE_EXCLUSIVE 1 // This application is not willing to share this | | #define SCARD_SHARE_EXCLUSIVE 1 // This application is not willing to share this |
| | |
| skipping to change at line 660 | | skipping to change at line 682 |
| // the reader, so it is not available to other | | // the reader, so it is not available to other |
| // applications. | | // applications. |
| | |
| #define SCARD_LEAVE_CARD 0 // Don't do anything special on close | | #define SCARD_LEAVE_CARD 0 // Don't do anything special on close |
| #define SCARD_RESET_CARD 1 // Reset the card on close | | #define SCARD_RESET_CARD 1 // Reset the card on close |
| #define SCARD_UNPOWER_CARD 2 // Power down the card on close | | #define SCARD_UNPOWER_CARD 2 // Power down the card on close |
| #define SCARD_EJECT_CARD 3 // Eject the card on close | | #define SCARD_EJECT_CARD 3 // Eject the card on close |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardConnectA( | | SCardConnectA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCSTR szReader, | | _In_ LPCSTR szReader, |
| __in DWORD dwShareMode, | | _In_ DWORD dwShareMode, |
| __in DWORD dwPreferredProtocols, | | _In_ DWORD dwPreferredProtocols, |
| __out LPSCARDHANDLE phCard, | | _Out_ LPSCARDHANDLE phCard, |
| __out LPDWORD pdwActiveProtocol); | | _Out_ LPDWORD pdwActiveProtocol); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardConnectW( | | SCardConnectW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in LPCWSTR szReader, | | _In_ LPCWSTR szReader, |
| __in DWORD dwShareMode, | | _In_ DWORD dwShareMode, |
| __in DWORD dwPreferredProtocols, | | _In_ DWORD dwPreferredProtocols, |
| __out LPSCARDHANDLE phCard, | | _Out_ LPSCARDHANDLE phCard, |
| __out LPDWORD pdwActiveProtocol); | | _Out_ LPDWORD pdwActiveProtocol); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardConnect SCardConnectW | | #define SCardConnect SCardConnectW |
| #else | | #else |
| #define SCardConnect SCardConnectA | | #define SCardConnect SCardConnectA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardReconnect( | | SCardReconnect( |
|
| __in SCARDHANDLE hCard, | | _In_ SCARDHANDLE hCard, |
| __in DWORD dwShareMode, | | _In_ DWORD dwShareMode, |
| __in DWORD dwPreferredProtocols, | | _In_ DWORD dwPreferredProtocols, |
| __in DWORD dwInitialization, | | _In_ DWORD dwInitialization, |
| __out_opt LPDWORD pdwActiveProtocol); | | _Out_opt_ LPDWORD pdwActiveProtocol); |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardDisconnect( | | SCardDisconnect( |
|
| __in SCARDHANDLE hCard, | | _In_ SCARDHANDLE hCard, |
| __in DWORD dwDisposition); | | _In_ DWORD dwDisposition); |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardBeginTransaction( | | SCardBeginTransaction( |
|
| __in SCARDHANDLE hCard); | | _In_ SCARDHANDLE hCard); |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardEndTransaction( | | SCardEndTransaction( |
|
| __in SCARDHANDLE hCard, | | _In_ SCARDHANDLE hCard, |
| __in DWORD dwDisposition); | | _In_ DWORD dwDisposition); |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardCancelTransaction( | | SCardCancelTransaction( |
|
| __in SCARDHANDLE hCard); | | _In_ SCARDHANDLE hCard); |
| // | | // |
| // NOTE: This call corresponds to the PC/SC SCARDCOMM::Cancel routine, | | // NOTE: This call corresponds to the PC/SC SCARDCOMM::Cancel routine, |
| // terminating a blocked SCardBeginTransaction service. | | // terminating a blocked SCardBeginTransaction service. |
| // | | // |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardState( | | SCardState( |
|
| __in SCARDHANDLE hCard, | | _In_ SCARDHANDLE hCard, |
| __out LPDWORD pdwState, | | _Out_ LPDWORD pdwState, |
| __out LPDWORD pdwProtocol, | | _Out_ LPDWORD pdwProtocol, |
| __out_bcount(*pcbAtrLen) LPBYTE pbAtr, | | _Out_writes_bytes_(*pcbAtrLen) LPBYTE pbAtr, |
| __inout LPDWORD pcbAtrLen); | | _Inout_ LPDWORD pcbAtrLen); |
| // | | // |
| // NOTE: SCardState is an obsolete routine. PC/SC has replaced it with | | // NOTE: SCardState is an obsolete routine. PC/SC has replaced it with |
| // SCardStatus. | | // SCardStatus. |
| // | | // |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardStatusA( | | SCardStatusA( |
|
| __in SCARDHANDLE hCard, | | _In_ SCARDHANDLE hCard, |
| __nullnullterminated __out_ecount_opt(*pcchReaderLen) LPSTR mszReaderNames, | | _When_(_Old_(*pcchReaderLen) == SCARD_AUTOALLOCATE, _At_((LPSTR *)mszReaderN |
| __inout_opt LPDWORD pcchReaderLen, | | ames, _Outptr_result_buffer_maybenull_(*pcchReaderLen) _At_(*_Curr_, _Post_z_ _P |
| __out_opt LPDWORD pdwState, | | ost_ _NullNull_terminated_))) |
| __out_opt LPDWORD pdwProtocol, | | _When_(_Old_(*pcchReaderLen) != SCARD_AUTOALLOCATE, _Out_writes_opt_(*pcchRe |
| __out_ecount_opt(*pcbAtrLen) LPBYTE pbAtr, | | aderLen) _Post_ _NullNull_terminated_) |
| __inout_opt LPDWORD pcbAtrLen); | | LPSTR mszReaderNames, |
| | _Inout_opt_ LPDWORD pcchReaderLen, |
| | _Out_opt_ LPDWORD pdwState, |
| | _Out_opt_ LPDWORD pdwProtocol, |
| | _When_(_Old_(*pcbAtrLen) == SCARD_AUTOALLOCATE, _At_((LPBYTE *)pbAtr, _Outpt |
| | r_result_buffer_maybenull_(*pcbAtrLen) _At_(*_Curr_, _Post_ _NullNull_terminated |
| | _))) |
| | _When_(_Old_(*pcbAtrLen) != SCARD_AUTOALLOCATE, _Out_writes_opt_(*pcbAtrLen) |
| | _Post_ _NullNull_terminated_) |
| | LPBYTE pbAtr, |
| | _Inout_opt_ LPDWORD pcbAtrLen); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardStatusW( | | SCardStatusW( |
|
| __in SCARDHANDLE hCard, | | _In_ SCARDHANDLE hCard, |
| __nullnullterminated __out_ecount_opt(*pcchReaderLen) LPWSTR mszReaderNames, | | _When_(_Old_(*pcchReaderLen) == SCARD_AUTOALLOCATE, _At_((LPWSTR *)mszReader |
| __inout_opt LPDWORD pcchReaderLen, | | Names, _Outptr_result_buffer_maybenull_(*pcchReaderLen) _At_(*_Curr_, _Post_z_ _ |
| __out_opt LPDWORD pdwState, | | Post_ _NullNull_terminated_))) |
| __out_opt LPDWORD pdwProtocol, | | _When_(_Old_(*pcchReaderLen) != SCARD_AUTOALLOCATE, _Out_writes_opt_(*pcchRe |
| __out_ecount_opt(*pcbAtrLen) LPBYTE pbAtr, | | aderLen) _Post_ _NullNull_terminated_) |
| __inout_opt LPDWORD pcbAtrLen); | | LPWSTR mszReaderNames, |
| | _Inout_opt_ LPDWORD pcchReaderLen, |
| | _Out_opt_ LPDWORD pdwState, |
| | _Out_opt_ LPDWORD pdwProtocol, |
| | _When_(_Old_(*pcbAtrLen) == SCARD_AUTOALLOCATE, _At_((LPBYTE *)pbAtr, _Outpt |
| | r_result_buffer_maybenull_(*pcbAtrLen) _At_(*_Curr_, _Post_ _NullNull_terminated |
| | _))) |
| | _When_(_Old_(*pcbAtrLen) != SCARD_AUTOALLOCATE, _Out_writes_opt_(*pcbAtrLen) |
| | _Post_ _NullNull_terminated_) |
| | LPBYTE pbAtr, |
| | _Inout_opt_ LPDWORD pcbAtrLen); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardStatus SCardStatusW | | #define SCardStatus SCardStatusW |
| #else | | #else |
| #define SCardStatus SCardStatusA | | #define SCardStatus SCardStatusA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardTransmit( | | SCardTransmit( |
|
| __in SCARDHANDLE hCard, | | _In_ SCARDHANDLE hCard, |
| __in LPCSCARD_IO_REQUEST pioSendPci, | | _In_ LPCSCARD_IO_REQUEST pioSendPci, |
| __in_bcount(cbSendLength) LPCBYTE pbSendBuffer, | | _In_reads_bytes_(cbSendLength) LPCBYTE pbSendBuffer, |
| __in DWORD cbSendLength, | | _In_ DWORD cbSendLength, |
| __inout_opt LPSCARD_IO_REQUEST pioRecvPci, | | _Inout_opt_ LPSCARD_IO_REQUEST pioRecvPci, |
| __out_bcount(*pcbRecvLength) LPBYTE pbRecvBuffer, | | _Out_writes_bytes_(*pcbRecvLength) LPBYTE pbRecvBuffer, |
| __inout LPDWORD pcbRecvLength); | | _Inout_ LPDWORD pcbRecvLength); |
| | |
| #if (NTDDI_VERSION >= NTDDI_VISTA) | | #if (NTDDI_VERSION >= NTDDI_VISTA) |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardGetTransmitCount( | | SCardGetTransmitCount( |
|
| __in SCARDHANDLE hCard, | | _In_ SCARDHANDLE hCard, |
| __out LPDWORD pcTransmitCount); | | _Out_ LPDWORD pcTransmitCount); |
| #endif // (NTDDI_VERSION >= NTDDI_VISTA) | | #endif // (NTDDI_VERSION >= NTDDI_VISTA) |
| | |
| // | | // |
| //////////////////////////////////////////////////////////////////////////////// | | //////////////////////////////////////////////////////////////////////////////// |
| // | | // |
| // Reader Control Routines | | // Reader Control Routines |
| // | | // |
| // The following services provide for direct, low-level manipulation of the | | // The following services provide for direct, low-level manipulation of the |
| // reader by the calling application allowing it control over the | | // reader by the calling application allowing it control over the |
| // attributes of the communications with the card. | | // attributes of the communications with the card. |
| // | | // |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardControl( | | SCardControl( |
|
| __in SCARDHANDLE hCard, | | _In_ SCARDHANDLE hCard, |
| __in DWORD dwControlCode, | | _In_ DWORD dwControlCode, |
| __in_bcount(cbInBufferSize) LPCVOID lpInBuffer, | | _In_reads_bytes_(cbInBufferSize) LPCVOID lpInBuffer, |
| __in DWORD cbInBufferSize, | | _In_ DWORD cbInBufferSize, |
| __out_bcount(cbOutBufferSize) LPVOID lpOutBuffer, | | _Out_writes_bytes_(cbOutBufferSize) LPVOID lpOutBuffer, |
| __in DWORD cbOutBufferSize, | | _In_ DWORD cbOutBufferSize, |
| __out LPDWORD lpBytesReturned); | | _Out_ LPDWORD lpBytesReturned); |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardGetAttrib( | | SCardGetAttrib( |
|
| __in SCARDHANDLE hCard, | | _In_ SCARDHANDLE hCard, |
| __in DWORD dwAttrId, | | _In_ DWORD dwAttrId, |
| __out_bcount_opt(*pcbAttrLen) LPBYTE pbAttr, | | _Out_writes_bytes_opt_(*pcbAttrLen) LPBYTE pbAttr, |
| __inout LPDWORD pcbAttrLen); | | _Inout_ LPDWORD pcbAttrLen); |
| // | | // |
| // NOTE: The routine SCardGetAttrib's name differs from the PC/SC definition. | | // NOTE: The routine SCardGetAttrib's name differs from the PC/SC definition. |
| // It should be: | | // It should be: |
| // | | // |
| // extern WINSCARDAPI LONG WINAPI | | // extern WINSCARDAPI LONG WINAPI |
| // SCardGetReaderCapabilities( | | // SCardGetReaderCapabilities( |
|
| // __in SCARDHANDLE hCard, | | // _In_ SCARDHANDLE hCard, |
| // __in DWORD dwTag, | | // _In_ DWORD dwTag, |
| // __out LPBYTE pbAttr, | | // _Out_ LPBYTE pbAttr, |
| // __inout LPDWORD pcbAttrLen); | | // _Inout_ LPDWORD pcbAttrLen); |
| // | | // |
| // Here's a work-around MACRO: | | // Here's a work-around MACRO: |
| #define SCardGetReaderCapabilities SCardGetAttrib | | #define SCardGetReaderCapabilities SCardGetAttrib |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardSetAttrib( | | SCardSetAttrib( |
|
| __in SCARDHANDLE hCard, | | _In_ SCARDHANDLE hCard, |
| __in DWORD dwAttrId, | | _In_ DWORD dwAttrId, |
| __in_bcount(cbAttrLen) LPCBYTE pbAttr, | | _In_reads_bytes_(cbAttrLen) LPCBYTE pbAttr, |
| __in DWORD cbAttrLen); | | _In_ DWORD cbAttrLen); |
| // | | // |
| // NOTE: The routine SCardSetAttrib's name differs from the PC/SC definition. | | // NOTE: The routine SCardSetAttrib's name differs from the PC/SC definition. |
| // It should be: | | // It should be: |
| // | | // |
| // extern WINSCARDAPI LONG WINAPI | | // extern WINSCARDAPI LONG WINAPI |
| // SCardSetReaderCapabilities( | | // SCardSetReaderCapabilities( |
|
| // __in SCARDHANDLE hCard, | | // _In_ SCARDHANDLE hCard, |
| // __in DWORD dwTag, | | // _In_ DWORD dwTag, |
| // __in LPCBYTE pbAttr, | | // _In_ LPCBYTE pbAttr, |
| // __in DWORD cbAttrLen); | | // _In_ DWORD cbAttrLen); |
| // | | // |
| // Here's a work-around MACRO: | | // Here's a work-around MACRO: |
| #define SCardSetReaderCapabilities SCardSetAttrib | | #define SCardSetReaderCapabilities SCardSetAttrib |
| | |
| // | | // |
| //////////////////////////////////////////////////////////////////////////////// | | //////////////////////////////////////////////////////////////////////////////// |
| // | | // |
| // Smart Card Dialog definitions | | // Smart Card Dialog definitions |
| // | | // |
| // The following section contains structures and exported function | | // The following section contains structures and exported function |
| | |
| skipping to change at line 841 | | skipping to change at line 871 |
| | |
| // Defined constants | | // Defined constants |
| // Flags | | // Flags |
| #define SC_DLG_MINIMAL_UI 0x01 | | #define SC_DLG_MINIMAL_UI 0x01 |
| #define SC_DLG_NO_UI 0x02 | | #define SC_DLG_NO_UI 0x02 |
| #define SC_DLG_FORCE_UI 0x04 | | #define SC_DLG_FORCE_UI 0x04 |
| | |
| #define SCERR_NOCARDNAME 0x4000 | | #define SCERR_NOCARDNAME 0x4000 |
| #define SCERR_NOGUIDS 0x8000 | | #define SCERR_NOGUIDS 0x8000 |
| | |
|
| typedef SCARDHANDLE (WINAPI *LPOCNCONNPROCA) (__in SCARDCONTEXT, __in LPSTR, __i | | typedef SCARDHANDLE (WINAPI *LPOCNCONNPROCA) (_In_ SCARDCONTEXT, _In_ LPSTR, _In |
| n LPSTR, __in PVOID); | | _ LPSTR, _In_ PVOID); |
| typedef SCARDHANDLE (WINAPI *LPOCNCONNPROCW) (__in SCARDCONTEXT, __in LPWSTR, __ | | typedef SCARDHANDLE (WINAPI *LPOCNCONNPROCW) (_In_ SCARDCONTEXT, _In_ LPWSTR, _I |
| in LPWSTR, __in PVOID); | | n_ LPWSTR, _In_ PVOID); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define LPOCNCONNPROC LPOCNCONNPROCW | | #define LPOCNCONNPROC LPOCNCONNPROCW |
| #else | | #else |
| #define LPOCNCONNPROC LPOCNCONNPROCA | | #define LPOCNCONNPROC LPOCNCONNPROCA |
| #endif // !UNICODE | | #endif // !UNICODE |
|
| typedef BOOL (WINAPI *LPOCNCHKPROC) (__in SCARDCONTEXT, __in SCARDHANDLE, __in P | | typedef BOOL (WINAPI *LPOCNCHKPROC) (_In_ SCARDCONTEXT, _In_ SCARDHANDLE, _In_ P |
| VOID); | | VOID); |
| typedef void (WINAPI *LPOCNDSCPROC) (__in SCARDCONTEXT, __in SCARDHANDLE, __in P | | typedef void (WINAPI *LPOCNDSCPROC) (_In_ SCARDCONTEXT, _In_ SCARDHANDLE, _In_ P |
| VOID); | | VOID); |
| | |
| // | | // |
| // OPENCARD_SEARCH_CRITERIA: In order to specify a user-extended search, | | // OPENCARD_SEARCH_CRITERIA: In order to specify a user-extended search, |
| // lpfnCheck must not be NULL. Moreover, the connection to be made to the | | // lpfnCheck must not be NULL. Moreover, the connection to be made to the |
| // card before performing the callback must be indicated by either providing | | // card before performing the callback must be indicated by either providing |
| // lpfnConnect and lpfnDisconnect OR by setting dwShareMode. | | // lpfnConnect and lpfnDisconnect OR by setting dwShareMode. |
| // If both the connection callbacks and dwShareMode are non-NULL, the callbacks | | // If both the connection callbacks and dwShareMode are non-NULL, the callbacks |
| // will be used. | | // will be used. |
| // | | // |
| | |
| | |
| skipping to change at line 966 | | skipping to change at line 996 |
| #endif // UNICODE | | #endif // UNICODE |
| | |
| #define OPENCARDNAMEA_EX OPENCARDNAME_EXA | | #define OPENCARDNAMEA_EX OPENCARDNAME_EXA |
| #define OPENCARDNAMEW_EX OPENCARDNAME_EXW | | #define OPENCARDNAMEW_EX OPENCARDNAME_EXW |
| #define POPENCARDNAMEA_EX POPENCARDNAME_EXA | | #define POPENCARDNAMEA_EX POPENCARDNAME_EXA |
| #define POPENCARDNAMEW_EX POPENCARDNAME_EXW | | #define POPENCARDNAMEW_EX POPENCARDNAME_EXW |
| #define LPOPENCARDNAMEA_EX LPOPENCARDNAME_EXA | | #define LPOPENCARDNAMEA_EX LPOPENCARDNAME_EXA |
| #define LPOPENCARDNAMEW_EX LPOPENCARDNAME_EXW | | #define LPOPENCARDNAMEW_EX LPOPENCARDNAME_EXW |
| | |
| // | | // |
|
| | // Smart Card Reader Selection Provider |
| | // |
| | // Only UNICODE is supported. Invoke smart card reader selection provider by cal |
| | ling |
| | // CredUIPromptForWindowsCredentials() supplying SCARD_READER_SEL_AUTH_PACKAGE a |
| | s |
| | // pulAuthPackage, an instance of READER_SEL_REQUEST as pvInAuthBuffer and setti |
| | ng |
| | // CREDUIWIN_AUTHPACKAGE_ONLY in dwFlags. Upon successful return, an instance of |
| | // READER_SEL_RESPONSE will be returned in ppvOutAuthBuffer. |
| | // |
| | |
| | #define SCARD_READER_SEL_AUTH_PACKAGE ((DWORD)-629) |
| | |
| | // |
| | // READER_SEL_REQUEST |
| | // Reader selection request to reader selection provider |
| | // |
| | // Members: |
| | // |
| | // dwShareMode: |
| | // Share mode used by SCardConnect to connect to smart cards |
| | // dwPreferredProtocols: |
| | // Acceptable protocols for SCardConnect to connect to smart cards |
| | // |
| | // MatchType: |
| | // Indicates how the caller wants the reader selection provider to verify sm |
| | art |
| | // cards. |
| | // |
| | // If MatchType is set to RSR_MATCH_TYPE_READER_AND_CONTAINER, reader select |
| | ion |
| | // provider will match smart cards based on whether they are in the given |
| | // reader and have the given key container. Reader name and container name a |
| | re |
| | // both optional. Reader name and container name, if any, need to be appende |
| | d |
| | // after READER_SEL_REQUEST structure and set their offsets and lengths in |
| | // ReaderAndContainerParameter member. |
| | // |
| | // If MatchType is set to RSR_MATCH_TYPE_SERIAL_NUMBER, reader selection |
| | // provider will match smart cards based on their serial numbers / card IDs. |
| | // Serial number is required. It needs to be appended after READER_SEL_REQUE |
| | ST |
| | // structure as a byte array and set its offset and length in |
| | // SerialNumberParameter member. |
| | // |
| | // If MatchType is set to RSR_MATCH_TYPE_ALL_CARDS, reader selection provide |
| | r |
| | // will allow all recognized cards to be selected by user without any filter |
| | ing. |
| | // The card may not be personalized for Base CSP / Smart Card KSP yet, or ev |
| | en |
| | // have its own CSP. |
| | // |
| | // ReaderAndContainerParameter.cbReaderNameOffset: |
| | // Byte offset of reader name UNICODE string from the beginning of |
| | // READER_SEL_REQUEST structure |
| | // ReaderAndContainerParameter.cchReaderNameLength: |
| | // Number of characters in reader name UNICODE string including the terminat |
| | ing |
| | // NULL character |
| | // ReaderAndContainerParameter.cbContainerNameOffset: |
| | // Byte offset of container name UNICODE string from the beginning of |
| | // READER_SEL_REQUEST structure |
| | // ReaderAndContainerParameter.cchContainerNameLength: |
| | // Number of characters in container name UNICODE string including the |
| | // terminating NULL character |
| | // ReaderAndContainerParameter.dwDesiredCardModuleVersion: |
| | // The desired smart card module version |
| | // ReaderAndContainerParameter.dwCspFlags: |
| | // CSP and KSP flags to indicate how smart cards will be used |
| | // (Valid flags include CRYPT_NEWKEYSET, CRYPT_DELETEKEYSET, CRYPT_VERIFYCON |
| | TEXT |
| | // and CRYPT_DEFAULT_CONTAINER_OPTIONAL) |
| | // |
| | // SerialNumberParameter.cbSerialNumberOffset: |
| | // Byte offset of serial number byte array from the beginning of |
| | // READER_SEL_REQUEST structure |
| | // SerialNumberParameter.cbSerialNumberLength: |
| | // Number of bytes in serial number byte array |
| | // SerialNumberParameter.dwDesiredCardModuleVersion: |
| | // The desired smart card module version |
| | // |
| | |
| | typedef enum { |
| | RSR_MATCH_TYPE_READER_AND_CONTAINER = 1, |
| | RSR_MATCH_TYPE_SERIAL_NUMBER, |
| | RSR_MATCH_TYPE_ALL_CARDS |
| | } READER_SEL_REQUEST_MATCH_TYPE; |
| | |
| | typedef struct { |
| | DWORD dwShareMode; |
| | DWORD dwPreferredProtocols; |
| | READER_SEL_REQUEST_MATCH_TYPE MatchType; |
| | union { |
| | struct { |
| | DWORD cbReaderNameOffset; |
| | DWORD cchReaderNameLength; |
| | DWORD cbContainerNameOffset; |
| | DWORD cchContainerNameLength; |
| | DWORD dwDesiredCardModuleVersion; |
| | DWORD dwCspFlags; |
| | } ReaderAndContainerParameter; |
| | struct { |
| | DWORD cbSerialNumberOffset; |
| | DWORD cbSerialNumberLength; |
| | DWORD dwDesiredCardModuleVersion; |
| | } SerialNumberParameter; |
| | }; |
| | } READER_SEL_REQUEST, *PREADER_SEL_REQUEST; |
| | |
| | // |
| | // READER_SEL_RESPONSE |
| | // Reader selection response from reader selection provider |
| | // |
| | // Members: |
| | // cbReaderNameOffset: |
| | // Byte offset of matched reader name UNICODE string from the beginning of |
| | // READER_SEL_RESPONSE structure |
| | // cchReaderNameLength: |
| | // Number of characters in matched reader name UNICODE string including the |
| | // terminating NULL character |
| | // cbCardNameOffset: |
| | // Byte offset of matched card name UNICODE string from the beginning of |
| | // READER_SEL_RESPONSE structure |
| | // cchCardNameLength: |
| | // Number of characters in matched card name UNICODE string including the |
| | // terminating NULL character |
| | // |
| | |
| | typedef struct { |
| | DWORD cbReaderNameOffset; |
| | DWORD cchReaderNameLength; |
| | DWORD cbCardNameOffset; |
| | DWORD cchCardNameLength; |
| | } READER_SEL_RESPONSE, *PREADER_SEL_RESPONSE; |
| | |
| | // |
| // SCardUIDlgSelectCard replaces GetOpenCardName | | // SCardUIDlgSelectCard replaces GetOpenCardName |
| // | | // |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardUIDlgSelectCardA( | | SCardUIDlgSelectCardA( |
| LPOPENCARDNAMEA_EX); | | LPOPENCARDNAMEA_EX); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardUIDlgSelectCardW( | | SCardUIDlgSelectCardW( |
| LPOPENCARDNAMEW_EX); | | LPOPENCARDNAMEW_EX); |
| #ifdef UNICODE | | #ifdef UNICODE |
| | |
| skipping to change at line 1077 | | skipping to change at line 1233 |
| SCardDlgExtendedError (void); | | SCardDlgExtendedError (void); |
| | |
| #if (NTDDI_VERSION >= NTDDI_VISTA) | | #if (NTDDI_VERSION >= NTDDI_VISTA) |
| | |
| // | | // |
| // Smartcard Caching API | | // Smartcard Caching API |
| // | | // |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardReadCacheA( | | SCardReadCacheA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in UUID *CardIdentifier, | | _In_ UUID *CardIdentifier, |
| __in DWORD FreshnessCounter, | | _In_ DWORD FreshnessCounter, |
| __in LPSTR LookupName, | | _In_ LPSTR LookupName, |
| __out_bcount(*DataLen) PBYTE Data, | | _Out_writes_bytes_(*DataLen) PBYTE Data, |
| __out DWORD *DataLen); | | _Out_ DWORD *DataLen); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardReadCacheW( | | SCardReadCacheW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in UUID *CardIdentifier, | | _In_ UUID *CardIdentifier, |
| __in DWORD FreshnessCounter, | | _In_ DWORD FreshnessCounter, |
| __in LPWSTR LookupName, | | _In_ LPWSTR LookupName, |
| __out_bcount(*DataLen) PBYTE Data, | | _Out_writes_bytes_(*DataLen) PBYTE Data, |
| __out DWORD *DataLen); | | _Out_ DWORD *DataLen); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardReadCache SCardReadCacheW | | #define SCardReadCache SCardReadCacheW |
| #else | | #else |
| #define SCardReadCache SCardReadCacheA | | #define SCardReadCache SCardReadCacheA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardWriteCacheA( | | SCardWriteCacheA( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in UUID *CardIdentifier, | | _In_ UUID *CardIdentifier, |
| __in DWORD FreshnessCounter, | | _In_ DWORD FreshnessCounter, |
| __in LPSTR LookupName, | | _In_ LPSTR LookupName, |
| __in_bcount(DataLen) PBYTE Data, | | _In_reads_bytes_(DataLen) PBYTE Data, |
| __in DWORD DataLen); | | _In_ DWORD DataLen); |
| extern WINSCARDAPI LONG WINAPI | | extern WINSCARDAPI LONG WINAPI |
| SCardWriteCacheW( | | SCardWriteCacheW( |
|
| __in SCARDCONTEXT hContext, | | _In_ SCARDCONTEXT hContext, |
| __in UUID *CardIdentifier, | | _In_ UUID *CardIdentifier, |
| __in DWORD FreshnessCounter, | | _In_ DWORD FreshnessCounter, |
| __in LPWSTR LookupName, | | _In_ LPWSTR LookupName, |
| __in_bcount(DataLen) PBYTE Data, | | _In_reads_bytes_(DataLen) PBYTE Data, |
| __in DWORD DataLen); | | _In_ DWORD DataLen); |
| #ifdef UNICODE | | #ifdef UNICODE |
| #define SCardWriteCache SCardWriteCacheW | | #define SCardWriteCache SCardWriteCacheW |
| #else | | #else |
| #define SCardWriteCache SCardWriteCacheA | | #define SCardWriteCache SCardWriteCacheA |
| #endif // !UNICODE | | #endif // !UNICODE |
| | |
| #endif // (NTDDI_VERSION >= NTDDI_VISTA) | | #endif // (NTDDI_VERSION >= NTDDI_VISTA) |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN8) |
| | |
| | _Success_(return == SCARD_S_SUCCESS) |
| | extern WINSCARDAPI LONG WINAPI |
| | SCardGetReaderIconA( |
| | _In_ SCARDCONTEXT hContext, |
| | _In_ LPCSTR szReaderName, |
| | _When_(_Old_(*pcbIcon) == SCARD_AUTOALLOCATE, _At_((LPBYTE *)pbIcon, _Outptr_r |
| | esult_bytebuffer_all_maybenull_(*pcbIcon))) |
| | _When_(_Old_(*pcbIcon) != SCARD_AUTOALLOCATE, _Out_writes_bytes_to_(*pcbIcon, |
| | *pcbIcon) _Post_z_) |
| | LPBYTE pbIcon, |
| | _Inout_ LPDWORD pcbIcon); |
| | _Success_(return == SCARD_S_SUCCESS) |
| | extern WINSCARDAPI LONG WINAPI |
| | SCardGetReaderIconW( |
| | _In_ SCARDCONTEXT hContext, |
| | _In_ LPCWSTR szReaderName, |
| | _When_(_Old_(*pcbIcon) == SCARD_AUTOALLOCATE, _At_((LPBYTE *)pbIcon, _Outptr_r |
| | esult_bytebuffer_all_maybenull_(*pcbIcon))) |
| | _When_(_Old_(*pcbIcon) != SCARD_AUTOALLOCATE, _Out_writes_bytes_to_(*pcbIcon, |
| | *pcbIcon) _Post_z_) |
| | LPBYTE pbIcon, |
| | _Inout_ LPDWORD pcbIcon); |
| | #ifdef UNICODE |
| | #define SCardGetReaderIcon SCardGetReaderIconW |
| | #else |
| | #define SCardGetReaderIcon SCardGetReaderIconA |
| | #endif // !UNICODE |
| | |
| | _Success_(return == SCARD_S_SUCCESS) |
| | extern WINSCARDAPI LONG WINAPI |
| | SCardGetDeviceTypeIdA( |
| | _In_ SCARDCONTEXT hContext, |
| | _In_ LPCSTR szReaderName, |
| | _Inout_ LPDWORD pdwDeviceTypeId); |
| | _Success_(return == SCARD_S_SUCCESS) |
| | extern WINSCARDAPI LONG WINAPI |
| | SCardGetDeviceTypeIdW( |
| | _In_ SCARDCONTEXT hContext, |
| | _In_ LPCWSTR szReaderName, |
| | _Inout_ LPDWORD pdwDeviceTypeId); |
| | #ifdef UNICODE |
| | #define SCardGetDeviceTypeId SCardGetDeviceTypeIdW |
| | #else |
| | #define SCardGetDeviceTypeId SCardGetDeviceTypeIdA |
| | #endif // !UNICODE |
| | |
| | _Success_(return == SCARD_S_SUCCESS) |
| | extern WINSCARDAPI LONG WINAPI |
| | SCardGetReaderDeviceInstanceIdA( |
| | _In_ SCARDCONTEXT hContext, |
| | _In_ LPCSTR szReaderName, |
| | _When_(_Old_(*pcchDeviceInstanceId) == SCARD_AUTOALLOCATE, _At_((LPSTR *)szDev |
| | iceInstanceId, _Outptr_result_buffer_maybenull_(*pcchDeviceInstanceId) _At_(*_Cu |
| | rr_, _Post_z_ _Post_ _NullNull_terminated_))) |
| | _When_(_Old_(*pcchDeviceInstanceId) != SCARD_AUTOALLOCATE, _Out_writes_opt_(*p |
| | cchDeviceInstanceId) _Post_ _NullNull_terminated_) |
| | LPSTR szDeviceInstanceId, |
| | _Inout_ LPDWORD pcchDeviceInstanceId); |
| | _Success_(return == SCARD_S_SUCCESS) |
| | extern WINSCARDAPI LONG WINAPI |
| | SCardGetReaderDeviceInstanceIdW( |
| | _In_ SCARDCONTEXT hContext, |
| | _In_ LPCWSTR szReaderName, |
| | _When_(_Old_(*pcchDeviceInstanceId) == SCARD_AUTOALLOCATE, _At_((LPWSTR *)szDe |
| | viceInstanceId, _Outptr_result_buffer_maybenull_(*pcchDeviceInstanceId) _At_(*_C |
| | urr_, _Post_z_ _Post_ _NullNull_terminated_))) |
| | _When_(_Old_(*pcchDeviceInstanceId) != SCARD_AUTOALLOCATE, _Out_writes_opt_(*p |
| | cchDeviceInstanceId) _Post_ _NullNull_terminated_) |
| | LPWSTR szDeviceInstanceId, |
| | _Inout_ LPDWORD pcchDeviceInstanceId); |
| | #ifdef UNICODE |
| | #define SCardGetReaderDeviceInstanceId SCardGetReaderDeviceInstanceIdW |
| | #else |
| | #define SCardGetReaderDeviceInstanceId SCardGetReaderDeviceInstanceIdA |
| | #endif // !UNICODE |
| | |
| | _Success_(return == SCARD_S_SUCCESS) |
| | extern WINSCARDAPI LONG WINAPI |
| | SCardListReadersWithDeviceInstanceIdA( |
| | _In_ SCARDCONTEXT hContext, |
| | _In_ LPCSTR szDeviceInstanceId, |
| | _When_(_Old_(*pcchReaders) == SCARD_AUTOALLOCATE, _At_((LPSTR *)mszReaders, _O |
| | utptr_result_buffer_maybenull_(*pcchReaders) _At_(*_Curr_, _Post_z_ _Post_ _Null |
| | Null_terminated_))) |
| | _When_(_Old_(*pcchReaders) != SCARD_AUTOALLOCATE, _Out_writes_opt_(*pcchReader |
| | s) _Post_ _NullNull_terminated_) |
| | LPSTR mszReaders, |
| | _Inout_ LPDWORD pcchReaders); |
| | _Success_(return == SCARD_S_SUCCESS) |
| | extern WINSCARDAPI LONG WINAPI |
| | SCardListReadersWithDeviceInstanceIdW( |
| | _In_ SCARDCONTEXT hContext, |
| | _In_ LPCWSTR szDeviceInstanceId, |
| | _When_(_Old_(*pcchReaders) == SCARD_AUTOALLOCATE, _At_((LPWSTR *)mszReaders, _ |
| | Outptr_result_buffer_maybenull_(*pcchReaders) _At_(*_Curr_, _Post_z_ _Post_ _Nul |
| | lNull_terminated_))) |
| | _When_(_Old_(*pcchReaders) != SCARD_AUTOALLOCATE, _Out_writes_opt_(*pcchReader |
| | s) _Post_ _NullNull_terminated_) |
| | LPWSTR mszReaders, |
| | _Inout_ LPDWORD pcchReaders); |
| | #ifdef UNICODE |
| | #define SCardListReadersWithDeviceInstanceId SCardListReadersWithDeviceInstance |
| | IdW |
| | #else |
| | #define SCardListReadersWithDeviceInstanceId SCardListReadersWithDeviceInstance |
| | IdA |
| | #endif // !UNICODE |
| | |
| | // |
| | //////////////////////////////////////////////////////////////////////////////// |
| | // |
| | // Smart Card Auditing |
| | // |
| | |
| | #define SCARD_AUDIT_CHV_FAILURE 0x0 // A smart card holder verification (CHV) |
| | // attempt failed. |
| | |
| | #define SCARD_AUDIT_CHV_SUCCESS 0x1 // A smart card holder verification (CHV) |
| | // attempt succeeded. |
| | |
| | _Success_(return == SCARD_S_SUCCESS) |
| | extern WINSCARDAPI LONG WINAPI |
| | SCardAudit( |
| | _In_ SCARDCONTEXT hContext, |
| | _In_ DWORD dwEvent); |
| | |
| | #endif // (NTDDI_VERSION >= NTDDI_WIN8) |
| | |
| | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ |
| | #pragma endregion |
| | |
| #ifdef __cplusplus | | #ifdef __cplusplus |
| } | | } |
| #endif | | #endif |
| #endif // _WINSCARD_H_ | | #endif // _WINSCARD_H_ |
| | |
| End of changes. 73 change blocks. |
| 263 lines changed or deleted | | 592 lines changed or added |
|