// Gemplus (C) 1999 // This object defines any reader interface. // So all reader should implement it. // Version 1.0 // Author: Sergey Ivanov // Date of creation - 11.01.1999 // Change log: // #ifndef _READER_ #define _READER_ #include "generic.h" #pragma PAGEDCODE class CSmartCard; class CUSBReader;//TOBE REMOVED // Abstruct class class CReader { public: NTSTATUS m_Status; SAFE_DESTRUCTORS(); virtual VOID dispose(){self_delete();}; public: CReader() {}; virtual ~CReader(){}; //virtual BOOL createInterface(LONG interfaceType, LONG protocolType,CDevice* device) {return FALSE;};//TOBE CHANGED virtual BOOL createInterface(LONG interfaceType, LONG protocolType,CUSBReader* device) {return FALSE;}; virtual BOOL isSmartCardInitialized() {return FALSE;}; virtual VOID setSmartCardInitialized(BOOL state) {}; virtual VOID initializeSmartCardSystem() {}; virtual PSMARTCARD_EXTENSION getCardExtention() {return NULL;}; virtual CSmartCard* getSmartCard() {return NULL;}; virtual PDEVICE_OBJECT getSystemDeviceObject() {return NULL;}; // Synchronization functions... virtual VOID reader_set_busy() {}; virtual VOID reader_set_Idle() {}; virtual NTSTATUS reader_WaitForIdle() {return STATUS_SUCCESS;}; virtual NTSTATUS reader_WaitForIdleAndBlock() {return STATUS_SUCCESS;}; // Interface with smartcard system virtual ULONG reader_UpdateCardState() {return 0;}; //virtual ULONG getCardState() {return 0;}; //virtual VOID setCardState(ULONG state) {}; virtual NTSTATUS reader_getVersion(PUCHAR pVersion, PULONG pLength) {return STATUS_SUCCESS;}; virtual NTSTATUS reader_setMode(ULONG mode) {return STATUS_SUCCESS;}; virtual VOID setNotificationState(ULONG state) {}; virtual ULONG getNotificationState() {return 0;}; virtual VOID completeCardTracking() {}; #ifdef DEBUG // Defines methods to process system requests... virtual NTSTATUS reader_Read(IN PIRP Irp) {return STATUS_SUCCESS;}; virtual NTSTATUS reader_Write(IN PIRP Irp) {return STATUS_SUCCESS;}; #endif // Define methods to process driver requests... virtual NTSTATUS reader_Read(BYTE * pRequest,ULONG RequestLength,BYTE * pReply,ULONG* pReplyLength) {return STATUS_SUCCESS;}; virtual NTSTATUS reader_Write(BYTE* pRequest,ULONG RequestLength,BYTE * pReply,ULONG* pReplyLength) {return STATUS_SUCCESS;}; virtual NTSTATUS reader_Ioctl(ULONG ControlCode,BYTE* pRequest,ULONG RequestLength,BYTE* pReply,ULONG* pReplyLength) {return STATUS_SUCCESS;}; virtual NTSTATUS reader_SwitchSpeed(ULONG ControlCode,BYTE* pRequest,ULONG RequestLength,BYTE* pReply,ULONG* pReplyLength) {return STATUS_SUCCESS;}; virtual NTSTATUS reader_VendorAttribute(ULONG ControlCode,BYTE* pRequest,ULONG RequestLength,BYTE* pReply,ULONG* pReplyLength) {return STATUS_SUCCESS;}; virtual NTSTATUS reader_Power(ULONG ControlCode,BYTE* pReply,ULONG* pReplyLength, BOOLEAN Specific) {return STATUS_SUCCESS;}; virtual NTSTATUS reader_SetProtocol(ULONG ProtocolRequested, UCHAR ProtocolNegociation) {return STATUS_SUCCESS;}; virtual NTSTATUS reader_translate_request(BYTE * pRequest,ULONG RequestLength,BYTE * pReply,ULONG* pReplyLength, PSCARD_CARD_CAPABILITIES cardCapabilities, BYTE NewWtx) {return STATUS_SUCCESS;}; virtual NTSTATUS reader_translate_response(BYTE * pRequest,ULONG RequestLength,BYTE * pReply,ULONG* pReplyLength) {return STATUS_SUCCESS;}; }; #endif // If defined