ShareMemory_Client.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. #ifndef SHARE_MEMORY_CLIENT_H
  2. #define SHARE_MEMORY_CLIENT_H
  3. #define SHAREMEMORY_CLIENT_API
  4. #define SHAREMEMORY_CLIENT_C_API extern "C"
  5. //#include"ShareMemory_Common.h"
  6. //SM_IMAGE的属性值均用8字节数据 unsigned long long
  7. const unsigned short SM_KEY_IMAGE_WIDTH = 0x3001;
  8. const unsigned short SM_KEY_IMAGE_HEIGHT = 0x3002;
  9. const unsigned short SM_KEY_IMAGE_BIT = 0x3003;
  10. const unsigned short SM_KEY_IMAGE_DEADLINE_TOP = 0x3004;
  11. const unsigned short SM_KEY_IMAGE_DEADLINE_LEFT = 0x3005;
  12. const unsigned short SM_KEY_IMAGE_DEADLINE_RIGHT = 0x3006;
  13. const unsigned short SM_KEY_IMAGE_DEADLINE_BOTTOM = 0x3007;
  14. const unsigned short SM_KEY_IMAGE_TAG = 0x3008;
  15. const unsigned short SM_KEY_IMAGE_INDEX = 0x3009;
  16. const unsigned short SM_KEY_IMAGE_YEAR = 0x3010;
  17. const unsigned short SM_KEY_IMAGE_MONTH = 0x3011;
  18. const unsigned short SM_KEY_IMAGE_DAY = 0x3012;
  19. const unsigned short SM_KEY_IMAGE_HOUR = 0x3013;
  20. const unsigned short SM_KEY_IMAGE_MINUTE = 0x3014;
  21. const unsigned short SM_KEY_IMAGE_SEC = 0x3015;
  22. const unsigned short SM_KEY_IMAGE_MILLSEC = 0x3016;
  23. const unsigned short SM_KEY_IMAGE_XRAYFLAG = 0x3017;
  24. const unsigned short SM_KEY_IMAGE_LSB = 0x2018;
  25. const unsigned short SM_KEY_IMAGE_DOSE = 0x2019;
  26. const unsigned short SM_KEY_IMAGE_PIXELSPACING = 0x201A;
  27. const unsigned short SM_KEY_IMAGE_PIXELREPRESENTATION = 0x201B;
  28. const unsigned short SM_KEY_IMAGE_ROTATION = 0x201C;
  29. const unsigned short SM_KEY_IMAGE_FLIP = 0x201D;
  30. const unsigned short SM_KEY_IMAGE_ORIGINX = 0x201E;
  31. const unsigned short SM_KEY_IMAGE_ORIGINY = 0x201F;
  32. const unsigned short SM_KEY_IMAGE_TYPE = 0x2020;
  33. #define IMAGEINFOBLOCKSIZE 2048 //2k大小预留空间,为添加图像头信息。 RAW图在BLOCK最后创建后大小不能变
  34. typedef struct _IMAGE
  35. {
  36. _IMAGE() {
  37. Width = 0;
  38. Height = 0;
  39. Bit = 0;
  40. TopOffset = 0;
  41. LeftOffset = 0;
  42. RightOffset = 0;
  43. BottomOffset = 0;
  44. ImageTag = 0;
  45. ImageIndex = 0;
  46. Year = 0;
  47. Month = 0;
  48. Day = 0;
  49. Hour = 0;
  50. Minute = 0;
  51. Second = 0;
  52. MillonSecond = 0;
  53. LSB = 0;
  54. Dose = 0;
  55. pData = NULL;
  56. PixelSpacing = 0;
  57. PixelRepresentation = 0;
  58. Rotation = 0;
  59. Flip = 0;
  60. OriginX = 0;
  61. OriginY = 0;
  62. Type = 0;
  63. };
  64. ~_IMAGE() {
  65. };
  66. unsigned short Width;
  67. unsigned short Height;
  68. unsigned short Bit;
  69. unsigned short TopOffset;
  70. unsigned short LeftOffset;
  71. unsigned short RightOffset;
  72. unsigned short BottomOffset;
  73. unsigned long ImageTag;
  74. unsigned long ImageIndex;
  75. unsigned short Year;
  76. unsigned char Month;
  77. unsigned char Day;
  78. unsigned char Hour;
  79. unsigned char Minute;
  80. unsigned char Second;
  81. unsigned short MillonSecond;
  82. float LSB;
  83. float Dose;
  84. char *pData;
  85. float PixelSpacing;
  86. int PixelRepresentation; //0:0000H unsigned integer; 1:0001H 2's complement
  87. int Rotation; //Rotation degree clockwise
  88. int Flip;
  89. int OriginX;
  90. int OriginY;
  91. int Type;
  92. }IMAGE;
  93. typedef enum eSMCreateResult
  94. {
  95. SM_CREATE_FAILED = -1,
  96. SM_CREATE_SUCCESS = 0,
  97. SM_ALREADYEXIST,
  98. }SMCreateResult;
  99. typedef enum eSMOpenResult
  100. {
  101. SM_OPEN_FAILED = -1,
  102. SM_OPEN_SUCCESS = 0 ,
  103. }SMOpenResult;
  104. typedef enum eAccessFlag
  105. {
  106. SM_NOACCESS,
  107. SM_READONLY,
  108. SM_WRITEONLY,
  109. SM_READWRITE,
  110. }SMAccessFlag;
  111. typedef enum _ShareMemory_Type
  112. {
  113. SM_TYPE_BLOCK,
  114. SM_TYPE_CRICLE,
  115. SM_TYPE_QUEUE,
  116. SM_TYPE_MAX
  117. }SHAREMEMORYTYPE;
  118. union SHRAREMEMBLOCKID
  119. {
  120. unsigned long dwShareMemBId;
  121. #pragma pack(1)
  122. struct
  123. {
  124. unsigned long ShareMemId : 8;
  125. unsigned long ResetCount : 8;
  126. unsigned long BlockId : 16;
  127. }stShareMemBId;
  128. #pragma pack()
  129. };
  130. #define UnvalidSMBid 0xffffffff
  131. typedef unsigned long ShareMemoryBlockID;
  132. typedef void* SMClientID;
  133. SHAREMEMORY_CLIENT_C_API int SMCreate(const char * path, int AccessFlags, unsigned long size, SMClientID & SMinfo);//create包含open
  134. SHAREMEMORY_CLIENT_C_API bool SMDestroy(const char * path);
  135. SHAREMEMORY_CLIENT_C_API int SMOpen(const char * path, int AccessFlags, SMClientID & SMinfo);
  136. SHAREMEMORY_CLIENT_C_API int SMOpenById(unsigned char &ShareMemId, int AccessFlags, SMClientID & SMinfo);
  137. SHAREMEMORY_CLIENT_C_API bool SMClose(SMClientID SMinfo);
  138. SHAREMEMORY_CLIENT_C_API bool SMLock(SMClientID SMinfo, int timeout);
  139. SHAREMEMORY_CLIENT_C_API bool SMUnLock(SMClientID SMinfo);
  140. SHAREMEMORY_CLIENT_C_API bool SMSetSize(SMClientID SMinfo, unsigned long size);
  141. SHAREMEMORY_CLIENT_C_API unsigned long SMGetSize(SMClientID SMinfo);
  142. SHAREMEMORY_CLIENT_C_API bool SMWrite(SMClientID SMinfo, void * buff, unsigned long size);
  143. SHAREMEMORY_CLIENT_C_API bool SMRead(SMClientID SMinfo, void * buff, unsigned long size);
  144. SHAREMEMORY_CLIENT_C_API bool SMSeek(SMClientID SMinfo, unsigned long position);
  145. SHAREMEMORY_CLIENT_C_API bool SMWriteEx(SMClientID SMinfo, unsigned long position, void * buff, unsigned long size);
  146. SHAREMEMORY_CLIENT_C_API bool SMReadEx(SMClientID SMinfo, unsigned long position, void * buff, unsigned long size);
  147. SHAREMEMORY_CLIENT_C_API bool SMSetSMCCtrl(SMClientID SMinfo, void * buff, unsigned long size);
  148. SHAREMEMORY_CLIENT_C_API bool SMGetSMCCtrl(SMClientID SMinfo, void * buff, unsigned long size);
  149. SHAREMEMORY_CLIENT_C_API void * SMGetSMCCtrlAddress(SMClientID SMinfo);
  150. SHAREMEMORY_CLIENT_C_API void * SMGetSMDataAddr(SMClientID SMCid, unsigned long & DataSize);
  151. SHAREMEMORY_CLIENT_C_API unsigned long SMInterLock(SMClientID SMinfo, unsigned long timeout);
  152. SHAREMEMORY_CLIENT_C_API bool SMInterUnLock(SMClientID SMinfo);
  153. SHAREMEMORY_CLIENT_C_API unsigned long SMInterLockExchange(SMClientID SMinfo, unsigned long offset, unsigned long timeout);
  154. SHAREMEMORY_CLIENT_C_API bool SMInterUnLockExchange(SMClientID SMinfo, unsigned long offset);
  155. SHAREMEMORY_CLIENT_C_API unsigned long SMLockSMCCtrl(SMClientID SMinfo, unsigned long timeout);
  156. SHAREMEMORY_CLIENT_C_API bool SMUnLockSMCCtrl(SMClientID SMinfo);
  157. SHAREMEMORY_CLIENT_C_API bool ShareMemory_ClientStart(void);
  158. SHAREMEMORY_CLIENT_C_API bool ShareMemory_ClientStop(void);
  159. #endif // SHARE_MEMORY_CLIENT_H