#pragma once #include "Definitions.h" #include "DiosFileHandle.h" #include "DiosLock.h" #include "ResDataObject.h" #ifndef CDI_EXPORTS #ifdef _WIN64 #ifdef _DEBUG #pragma comment(lib, "CDIX64D.lib") #else #pragma comment(lib, "CDIX64.lib") #endif #else #ifdef _DEBUG #pragma comment(lib, "CDID.lib") #else #pragma comment(lib, "CDI.lib") #endif #endif #endif #ifdef CDI_EXPORTS #define CDI_API __declspec(dllexport) #define CDI_C_API extern "C" __declspec(dllexport) #else #define CDI_API __declspec(dllimport) #define CDI_C_API extern "C" __declspec(dllimport) #endif class CDI_API CDI :public DiosLock{ HANDLE m_Mutex; UINT64 m_MasterProcId; HANDLE m_ExitHandle; void *m_prootClient; PVOID m_DCSMap; INT LoadAllDCS();//used by system INT UnLoadAllDCS();//used by system bool InitBusUnit(); void Ex_ResponseClientReq(ResDataObject &Req, RET_STATUS status, const char *pInfo = NULL); void Ex_ResponseRemoteClientReq(ResDataObject &Req, RET_STATUS status, const char *pInfo = NULL); void Ex_ResponseDeviceRes(ResDataObject &Res); void Ex_ResponseEbus(ResDataObject &packet); void Ex_RequestRemoteClientClose(ResDataObject &Res); CMD_ECHO DispatchToLocal(ResDataObject &packet); public: CDI(void); virtual ~CDI(void); bool WaitExit(DWORD timeout = 0, bool Exit = false); bool InitAs(DIOS_PROC_TYPE Master, UINT64 MasterProcId);//3 = DiosClient,2 = Channel,1 = Master,0 = Slave INT CommandInput(const char *pszCmd); //simple command bool ReceivedFromLocalBus(ResDataObject &packet); bool ReceivedFromEthBus(ResDataObject &packet); bool ReceivedFromBus(ResDataObject &packet); bool ReceivedFromDevice(ResDataObject &packet); bool ReceivedDeviceNotify(ResDataObject &packet); bool ReceivedFromClient(ResDataObject &packet); //Client Stuff bool RegistClient(UINT64 Address); bool UnRegistClient(UINT64 Address); //Handle Stuff bool Registhandle(HANDLE Handle); bool UnRegistHandle(UINT64 CrcCode); bool RegistThread(PVOID pDiosThread); void UnRegistThread(DWORD Tid); bool GetThreadsLogger(DWORD Tid, PVOID &pLogger); void UnLoadAll(); bool AddDPC(PVOID pMDPC, PVOID pDPC, ResDataObject &DrvConfig); bool DelDPC(PVOID pMDPC, PVOID pDPC); }; CDI_C_API CDI *GetCommandDispathIF(); CDI_C_API bool InitClientEnv(); CDI_C_API bool DestroyClientEnv();