SysModule.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #pragma once
  2. #ifndef _SYSMODULE_
  3. #define _SYSMODULE_
  4. #ifndef SYSMODULE
  5. #define SYSMODULE extern "C" _declspec(dllexport)
  6. #else
  7. #undef SYSMODULE
  8. #define SYSMODULE extern "C" _declspec(dllimport)
  9. #endif
  10. #define CLSID_BASEMODULE L"{DA90D68D-99EB-45D5-A969-BC3D0D12D92A}"
  11. #pragma pack(push,1)
  12. class IBaseCurl;
  13. //获取其他类的指针
  14. class IBaseGloablModule
  15. {
  16. public:
  17. virtual ~IBaseGloablModule(void) {}
  18. ////获取错误的消息
  19. //virtual LPCSTR GetLastErrorA() = 0;
  20. //virtual LPCWSTR GetLastErrorW() = 0;
  21. virtual IBaseCurl* GetBaseCurlInstance() = 0;
  22. virtual INT AddRef() = 0;
  23. virtual INT Release() = 0;
  24. };
  25. template<typename T>
  26. class IInstanceList
  27. {
  28. public:
  29. IInstanceList(void)
  30. {
  31. m_pNext = NULL;
  32. m_pPrev = NULL;
  33. }
  34. virtual ~IInstanceList(void)
  35. {
  36. Detach();
  37. }
  38. virtual void AddInstance(T* pInstance)
  39. {
  40. if (m_pNext && (m_pNext != pInstance))
  41. m_pNext->AddInstance(pInstance);
  42. else
  43. {
  44. pInstance->m_pPrev = (T*)this;
  45. m_pNext = pInstance;
  46. }
  47. }
  48. virtual void Detach()
  49. {
  50. if (m_pNext)
  51. m_pNext->m_pPrev = m_pPrev;
  52. if (m_pPrev)
  53. m_pPrev->m_pNext = m_pNext;
  54. m_pPrev = m_pNext = NULL;
  55. }
  56. T* m_pPrev;
  57. T* m_pNext;
  58. };
  59. class IServerListCallback
  60. {
  61. public:
  62. virtual ~IServerListCallback(void) {};
  63. virtual void ServerListCallback() = 0;
  64. };
  65. enum HTTPRET
  66. {
  67. http_no = 0,
  68. http_f,
  69. http_yes,
  70. http_start,
  71. http_end,
  72. };
  73. //请求网络接口
  74. class IBaseCurl
  75. : public IInstanceList<IBaseCurl>
  76. {
  77. public:
  78. virtual ~IBaseCurl(void) {};
  79. virtual HTTPRET GetHttpConnectstatus() = 0;
  80. virtual LPCSTR GetLastErrorA() = 0;
  81. };
  82. SYSMODULE IBaseGloablModule* WINAPI GetBaseGlobalInstance();
  83. SYSMODULE BOOL WINAPI ReleaseBaseGlobalInstance();
  84. #pragma pack(pop)
  85. #endif