ShareMemClientInterface.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #pragma once
  2. #include "FunctionErrorCode.h"
  3. #include "FunctionDataTypeCommon.h"
  4. #include "AdvancedFunctionDataElement.h"
  5. #ifdef _WIN64
  6. #ifdef _DEBUG
  7. #pragma comment(lib, "ECOMFunctionAPIX64D.lib")
  8. #else
  9. #pragma comment(lib, "ECOMFunctionAPIX64.lib")
  10. #endif
  11. #else
  12. #ifdef _DEBUG
  13. #pragma comment(lib, "ECOMFunctionAPID.lib")
  14. #else
  15. #pragma comment(lib, "ECOMFunctionAPI.lib")
  16. #endif
  17. #endif
  18. #ifndef _SHAREMEMCLIENT_CLASSINDLL
  19. #ifdef _WIN64
  20. #ifdef _DEBUG
  21. #pragma comment(lib, "ShareMemAPIX64D.lib")
  22. #else
  23. #pragma comment(lib, "ShareMemAPIX64.lib")
  24. #endif
  25. #else
  26. #ifdef _DEBUG
  27. #pragma comment(lib, "ShareMemAPID.lib")
  28. #else
  29. #pragma comment(lib, "ShareMemAPI.lib")
  30. #endif
  31. #endif
  32. #endif
  33. #ifdef _SHAREMEMCLIENT_CLASSINDLL
  34. #define SHAREMEMCLIENTDLL_CLASS_DECL _declspec(dllexport)
  35. #else
  36. #define SHAREMEMCLIENTDLL_CLASS_DECL _declspec(dllimport)
  37. #endif
  38. #define INVALID_SHAREMEM_ID (unsigned __int64)~0
  39. class CShareMemInfo;
  40. class CBaseFunctionDataElement;
  41. class SHAREMEMCLIENTDLL_CLASS_DECL CShareMemClient
  42. {
  43. public:
  44. CShareMemClient();
  45. virtual ~CShareMemClient();
  46. unsigned short GetUserId(){ return m_dwUserId; };
  47. CBaseFunctionDataElement* CreateDataElement(FUNCTION_DATATYPE eDataType, const wstring& strName = L"");
  48. void ReleaseDataElement(CBaseFunctionDataElement* pDataElement);
  49. int Register();
  50. int UnRegister();
  51. int ReadShareMem(unsigned __int64 dwShareMemId, CBaseFunctionDataElement** vecDataElement, unsigned int nBufferCount, unsigned int& nElementCount);
  52. int WriteShareMem(CBaseFunctionDataElement** vecDataElement, unsigned int nElementCount, unsigned __int64& dwShareMemId);
  53. int ReleaseShareMem(unsigned int dwShareMemId);
  54. int ReleaseAllShareMem();
  55. private:
  56. static void EncodeId(unsigned short wUserId, unsigned int nShareMemId, unsigned short wContentId, unsigned __int64& dwShareMemId);
  57. static void DecodeId(unsigned __int64 dwShareMemId, unsigned short& wUserId, unsigned int& nShareMemId, unsigned short& wContentId);
  58. unsigned short m_dwUserId;
  59. CShareMemInfo* m_ShareMemInfo;
  60. unsigned int m_dwShareMemCounter;
  61. CRITICAL_SECTION m_ShareMemCounterCritical;
  62. unsigned short m_dwContentCounter;
  63. CRITICAL_SECTION m_ContentCounterCritical;
  64. };