#pragma once // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 TRANSACTDPC_EXPORTS // 符号编译的。在使用此 DLL 的 // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将 // TRANSACTDPC_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的 // 符号视为是被导出的。 #ifndef TRANSACTDPC_EXPORTS #ifdef _WIN64 #ifdef _DEBUG #pragma comment(lib, "TransactDPCX64D.lib") #else #pragma comment(lib, "TransactDPCX64.lib") #endif #else #ifdef _DEBUG #pragma comment(lib, "TransactDPCD.lib") #else #pragma comment(lib, "TransactDPC.lib") #endif #endif #endif #ifdef TRANSACTDPC_EXPORTS #define TRANSACTDPC_API __declspec(dllexport) #define TRANSACTDPC_C_API extern "C" __declspec(dllexport) #else #define TRANSACTDPC_API __declspec(dllimport) #define TRANSACTDPC_C_API extern "C" __declspec(dllimport) #endif #include "ResDataObject.h" #include "LogicDriver.h" #include "AutoFunc.h" #define MNY_MAXLIMIT (160000) typedef enum _TransactErrCode{ TRANSACTERROR_FE = -3,//FatalError TRANSACTERROR_UN = -2,//unknown TRANSACTERROR_TO = -1,//timeout TRANSACTERROR_OK, TRANSACTERROR_TP, TRANSACTERROR_ZT, TRANSACTERROR_DT, TRANSACTERROR_NM,//no money TRANSACTERROR_NC,//no chip TRANSACTERROR_PE,//ParamError TRANSACTERROR_MAX }TRANSACTERRORCODE; TRANSACTDPC_C_API DriverDPC* GetDriverDPC(); TRANSACTDPC_C_API void ReleaseDriverDPC(DriverDPC *p); class TRANSACTDPC_API TransactDPC : public LogicDriver { std::string *m_pWorkpath; bool m_LastBStatus; TRANSACTERRORCODE m_LastErrStatus; WindowObject *m_pLoginObj; WindowObject *m_pLoginMsgObj1; WindowObject *m_pLoginMsgObj2; WindowObject *m_pMainObj; WindowObject *m_pStatusObj; WindowObject *m_pBinObj; WindowObject *m_pSoutObj; WindowObject *m_pConfirmObj; WindowObject *m_pConfirmAckObj; public: TransactDPC(void); virtual ~TransactDPC(void); bool GetDeviceType(GUID &DevType); BOOL InitWindowObjects(BOOL expThrow); void ClearWindowObjects(); virtual bool DriverEntry(ResDataObject &Configuration); virtual bool Driver_Probe(ResDataObject &HardwareInfo); virtual bool SYSTEM_CALL SetDriverWorkPath(const char * PARAM_IN pWorkPath); virtual PVOID SYSTEM_CALL LoadDriver();//无根节点 virtual void SYSTEM_CALL UnloadDriver(); virtual DWORD SYSTEM_CALL OnNotify(HANDLE evtList[], DWORD count); virtual RET_STATUS DATA_ACTION Login(); virtual RET_STATUS DATA_ACTION BIN(const char * PARAM_IN pCode, DWORD PARAM_IN Chip); virtual RET_STATUS DATA_ACTION SOUT(const char * PARAM_IN pCode, DWORD PARAM_IN Chip); virtual RET_STATUS DATA_ACTION LogOut(); virtual RET_STATUS DATA_ACTION ShutDown(); virtual RET_STATUS DATA_ACTION GetStatus(FLOAT PARAM_OUT &LeftM,FLOAT PARAM_OUT &ChipM); RET_STATUS DATA_ACTION GetLastError(DWORD &ErrorCode); RET_STATUS GetDeviceResource(ResDataObject *pDeviceResource); RET_STATUS Request(ResDataObject *pRequest, ResDataObject *pResponse); HWND GetControlWindow(); void ClearHistory(); };