00001
00002
00004
00005 #if !defined(AFX_SCARDREADERLISTENER_H__F276A1D1_139A_45E4_B9FA_425EB1A22C88__INCLUDED_)
00006 #define AFX_SCARDREADERLISTENER_H__F276A1D1_139A_45E4_B9FA_425EB1A22C88__INCLUDED_
00007
00008 #if _MSC_VER > 1000
00009 #pragma once
00010 #endif // _MSC_VER > 1000
00011
00012 #include "SmartCardManager.h"
00013 #include "uscapi.h"
00014 #include <UUCHashtable.hpp>
00015
00016 #define CARD_EVT_REMOVED 1
00017 #define CARD_EVT_INSERTED 2
00018 #define CARD_EVT_UNABLETOOPENCONTEXT 3
00019 #define CARD_EVT_CANCELLED 4
00020 #define CARD_EVT_READER_UNAVAILABLE 5
00021 #define CARD_EVT_NO_READERS_AVAILABLE 6
00022
00023 typedef UUCHashtable<int, SCARDCONTEXT> MONITORTABLE;
00024
00025 namespace USCAPI
00026 {
00027
00029 class USCAPI_API CSmartCardReaderListener
00030 {
00031 public:
00032
00034 CSmartCardReaderListener();
00035 virtual ~CSmartCardReaderListener();
00036
00038 virtual void noReadersAvailable();
00040 virtual void readerUnavailable(const char* szReader);
00042 virtual void cancelled(const char* szReader);
00044 virtual void unableToOpenContext(const char* szReader);
00046 virtual void smartCardRemoved(const char* szReader);
00048 virtual void smartCardInserted(const char* szReader, const ATR& atr);
00049
00051 bool enable(bool bEnable);
00053 bool enable(bool bEnable, const char* szReader);
00055 bool isEnabled() const;
00056
00058 bool isEnabled(const char* szReader) const;
00059
00060 private:
00061 bool m_bEnabled;
00062 CSmartCardManager m_scMgr;
00063 HANDLE m_hCloseEvent;
00064 MONITORTABLE m_monitorTbl;
00065
00066 friend void readerMonitoring(void*);
00067 };
00068
00069 }
00070 #endif // !defined(AFX_SCARDREADERLISTENER_H__F276A1D1_139A_45E4_B9FA_425EB1A22C88__INCLUDED_)