windows-nt/Source/XPSP1/NT/drivers/smartcrd/gempc430/reader.h
2020-09-26 16:20:57 +08:00

75 lines
3.3 KiB
C++

// 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