CDI.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #pragma once
  2. #include "Definitions.h"
  3. #include "DiosFileHandle.h"
  4. #include "DiosLock.h"
  5. #include "ResDataObject.h"
  6. #ifndef CDI_EXPORTS
  7. #ifdef _WIN64
  8. #ifdef _DEBUG
  9. #pragma comment(lib, "CDIX64D.lib")
  10. #else
  11. #pragma comment(lib, "CDIX64.lib")
  12. #endif
  13. #else
  14. #ifdef _DEBUG
  15. #pragma comment(lib, "CDID.lib")
  16. #else
  17. #pragma comment(lib, "CDI.lib")
  18. #endif
  19. #endif
  20. #endif
  21. #ifdef CDI_EXPORTS
  22. #define CDI_API __declspec(dllexport)
  23. #define CDI_C_API extern "C" __declspec(dllexport)
  24. #else
  25. #define CDI_API __declspec(dllimport)
  26. #define CDI_C_API extern "C" __declspec(dllimport)
  27. #endif
  28. class CDI_API CDI :public DiosLock{
  29. HANDLE m_Mutex;
  30. UINT64 m_MasterProcId;
  31. HANDLE m_ExitHandle;
  32. void *m_prootClient;
  33. PVOID m_DCSMap;
  34. INT LoadAllDCS();//used by system
  35. INT UnLoadAllDCS();//used by system
  36. bool InitBusUnit();
  37. void Ex_ResponseClientReq(ResDataObject &Req, RET_STATUS status, const char *pInfo = NULL);
  38. void Ex_ResponseRemoteClientReq(ResDataObject &Req, RET_STATUS status, const char *pInfo = NULL);
  39. void Ex_ResponseDeviceRes(ResDataObject &Res);
  40. void Ex_ResponseEbus(ResDataObject &packet);
  41. void Ex_RequestRemoteClientClose(ResDataObject &Res);
  42. CMD_ECHO DispatchToLocal(ResDataObject &packet);
  43. public:
  44. CDI(void);
  45. virtual ~CDI(void);
  46. bool WaitExit(DWORD timeout = 0, bool Exit = false);
  47. bool InitAs(DIOS_PROC_TYPE Master, UINT64 MasterProcId);//3 = DiosClient,2 = Channel,1 = Master,0 = Slave
  48. INT CommandInput(const char *pszCmd);
  49. //simple command
  50. bool ReceivedFromLocalBus(ResDataObject &packet);
  51. bool ReceivedFromEthBus(ResDataObject &packet);
  52. bool ReceivedFromBus(ResDataObject &packet);
  53. bool ReceivedFromDevice(ResDataObject &packet);
  54. bool ReceivedDeviceNotify(ResDataObject &packet);
  55. bool ReceivedFromClient(ResDataObject &packet);
  56. //Client Stuff
  57. bool RegistClient(UINT64 Address);
  58. bool UnRegistClient(UINT64 Address);
  59. //Handle Stuff
  60. bool Registhandle(HANDLE Handle);
  61. bool UnRegistHandle(UINT64 CrcCode);
  62. bool RegistThread(PVOID pDiosThread);
  63. void UnRegistThread(DWORD Tid);
  64. bool GetThreadsLogger(DWORD Tid, PVOID &pLogger);
  65. void UnLoadAll();
  66. bool AddDPC(PVOID pMDPC, PVOID pDPC, ResDataObject &DrvConfig);
  67. bool DelDPC(PVOID pMDPC, PVOID pDPC);
  68. };
  69. CDI_C_API CDI *GetCommandDispathIF();
  70. CDI_C_API bool InitClientEnv();
  71. CDI_C_API bool DestroyClientEnv();