00001
00002
00004 #pragma warning( disable : 4290)
00005
00006 #if !defined(AFX_SCARDMANAGER_H__DED857A2_566E_49A1_AFF9_393682240D18__INCLUDED_)
00007 #define AFX_SCARDMANAGER_H__DED857A2_566E_49A1_AFF9_393682240D18__INCLUDED_
00008
00009 #if _MSC_VER > 1000
00010 #pragma once
00011 #endif // _MSC_VER > 1000
00012
00013 #include <winscard.h>
00014 #include "uscapi.h"
00015 #include "SmartCardConnection.h"
00016 #include "SmartCardReaderVector.h"
00017
00018 #define SC_PRESENT(dwState) \
00019 ((dwState & SCARD_STATE_PRESENT) == SCARD_STATE_PRESENT)
00020
00021 namespace USCAPI
00022 {
00023
00026 class USCAPI_API CSmartCardManager
00027 {
00028 public:
00029
00031 CSmartCardManager(const SCARDCONTEXT hContext);
00033 CSmartCardManager();
00034 ~CSmartCardManager();
00035
00037 long refreshContext();
00038
00040 CSmartCardConnection* connect(const char* szReader = NULL, IN DWORD dwShareMode = SCARD_SHARE_SHARED, IN DWORD dwProtocol = SCARD_PROTOCOL_T1 | SCARD_PROTOCOL_T0);
00041
00043 long disconnect(CSmartCardConnection* pCardConnection, bool bReset = false);
00044
00046 long getReaderList(CSmartCardReaderVector& readerVector, bool bPresent) const;
00047
00049 long getReaderState(const char* szReader, DWORD* pdwState) const;
00050
00052 bool isSmartCardInserted(const char* szReader) const;
00053
00055 long waitForSmartCardInserted(const char* szReader);
00057 long waitForSmartCardInserted(const char* szReader, int timeout);
00059 long waitForSmartCardRemoved(const char* szReader);
00061 long waitForSmartCardRemoved(const char* szReader, int timeout);
00062
00064 long cancelWaiting();
00065
00066 private:
00067 SCARDCONTEXT m_hContext;
00068 };
00069
00070 }
00071 #endif // !defined(AFX_SCARDMANAGER_H__DED857A2_566E_49A1_AFF9_393682240D18__INCLUDED_)