123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- // 下列 ifdef 块是创建使从 DLL 导出更简单的
- // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 SHAREMEMORY_CLIENT_EXPORTS
- // 符号编译的。在使用此 DLL 的
- // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
- // SHAREMEMORY_CLIENT_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
- // 符号视为是被导出的。
- #pragma once
- #ifdef SHAREMEMORY_CLIENT_EXPORTS
- #define SHAREMEMORY_CLIENT_API __declspec(dllexport)
- #else
- #define SHAREMEMORY_CLIENT_API __declspec(dllimport)
- #endif
- #ifndef SHAREMEMORY_CLIENT_EXPORTS
- #ifdef _WIN64
- #ifdef _DEBUG
- #pragma comment(lib, "ShareMemory_ClientX64D.lib")
- #else
- #pragma comment(lib, "ShareMemory_ClientX64.lib")
- #endif
- #else
- #ifdef _DEBUG
- #pragma comment(lib, "ShareMemory_ClientD.lib")
- #else
- #pragma comment(lib, "ShareMemory_Client.lib")
- #endif
- #endif
- #endif
- #ifdef SHAREMEMORY_CLIENT_EXPORTS
- #define SHAREMEMORY_CLIENT_API __declspec(dllexport)
- #define SHAREMEMORY_CLIENT_C_API extern "C" __declspec(dllexport)
- #else
- #define SHAREMEMORY_CLIENT_API __declspec(dllimport)
- #define SHAREMEMORY_CLIENT_C_API extern "C" __declspec(dllimport)
- #endif
- //#include"ShareMemory_Common.h"
- #define PRINTA_TRACE(log,format,...)
- #define PRINTA_DEBUG(log,format,...)
- #define PRINTA_INFO(log,format,...)
- #define PRINTA_WARN(log,format,...)
- #define PRINTA_ERROR(log,format,...)
- #define PRINTA_FATAL(log,format,...)
- class Logger
- {};
- //SM_IMAGE的属性值均用8字节数据 unsigned long long
- const WORD SM_KEY_IMAGE_WIDTH = 0x3001;
- const WORD SM_KEY_IMAGE_HEIGHT = 0x3002;
- const WORD SM_KEY_IMAGE_BIT = 0x3003;
- const WORD SM_KEY_IMAGE_DEADLINE_TOP = 0x3004;
- const WORD SM_KEY_IMAGE_DEADLINE_LEFT = 0x3005;
- const WORD SM_KEY_IMAGE_DEADLINE_RIGHT = 0x3006;
- const WORD SM_KEY_IMAGE_DEADLINE_BOTTOM = 0x3007;
- const WORD SM_KEY_IMAGE_TAG = 0x3008;
- const WORD SM_KEY_IMAGE_INDEX = 0x3009;
- const WORD SM_KEY_IMAGE_YEAR = 0x3010;
- const WORD SM_KEY_IMAGE_MONTH = 0x3011;
- const WORD SM_KEY_IMAGE_DAY = 0x3012;
- const WORD SM_KEY_IMAGE_HOUR = 0x3013;
- const WORD SM_KEY_IMAGE_MINUTE = 0x3014;
- const WORD SM_KEY_IMAGE_SEC = 0x3015;
- const WORD SM_KEY_IMAGE_MILLSEC = 0x3016;
- const WORD SM_KEY_IMAGE_XRAYFLAG = 0x3017;
- const WORD SM_KEY_IMAGE_LSB = 0x2018;
- const WORD SM_KEY_IMAGE_DOSE = 0x2019;
- const WORD SM_KEY_IMAGE_PIXELSPACING = 0x201A;
- const WORD SM_KEY_IMAGE_PIXELREPRESENTATION = 0x201B;
- const WORD SM_KEY_IMAGE_ROTATION = 0x201C;
- const WORD SM_KEY_IMAGE_FLIP = 0x201D;
- const WORD SM_KEY_IMAGE_ORIGINX = 0x201E;
- const WORD SM_KEY_IMAGE_ORIGINY = 0x201F;
- const WORD SM_KEY_IMAGE_TYPE = 0x2020;
- static const char* IMAGE_HEAD = "ImageHead";
- static const char* IMAGE_WIDTH = "ImageWidth";
- static const char* IMAGE_HEIGHT = "ImageHeight";
- static const char* IMAGE_BIT = "ImageBit";
- static const char* IMAGE_DEADLINE_TOP = "DeadLineTop";
- static const char* IMAGE_DEADLINE_LEFT = "DeadLineLeft";
- static const char* IMAGE_DEADLINE_RIGHT = "DeadLineRight";
- static const char* IMAGE_DEADLINE_BOTTOM = "DeadLineBottom";
- static const char* IMAGE_TAG = "ImageTag";
- static const char* IMAGE_INDEX = "ImageIndex";
- static const char* IMAGE_YEAR = "Year";
- static const char* IMAGE_MONTH = "Month";
- static const char* IMAGE_DAY = "Day";
- static const char* IMAGE_HOUR = "Hour";
- static const char* IMAGE_MINUTE = "Minute";
- static const char* IMAGE_SEC = "Second";
- static const char* IMAGE_MILLSEC = "MilliSecond";
- static const char* IMAGE_XRAYFLAG = "XrayFlag";
- static const char* IMAGE_LSB = "LSB";
- static const char* IMAGE_DOSE = "Dose";
- static const char* IMAGE_PIXELSPACING = "PixelSpacing";
- static const char* IMAGE_PIXELREPRESENTATION = "PixelRepresentation";
- static const char* IMAGE_ROTATION = "Rotation";
- static const char* IMAGE_FLIP = "Flip";
- static const char* IMAGE_ORIGINX = "OriginX";
- static const char* IMAGE_ORIGINY = "OriginY";
- static const char* IMAGE_TYPE = "Type";
- #define IMAGEINFOBLOCKSIZE 2048 //2k大小预留空间,为添加图像头信息。 RAW图在BLOCK最后创建后大小不能变
- typedef struct _IMAGE
- {
- _IMAGE() {
- Width = 0;
- Height = 0;
- Bit = 0;
- TopOffset = 0;
- LeftOffset = 0;
- RightOffset = 0;
- BottomOffset = 0;
- ImageTag = 0;
- ImageIndex = 0;
- Year = 0;
- Month = 0;
- Day = 0;
- Hour = 0;
- Minute = 0;
- Second = 0;
- MillonSecond = 0;
- LSB = 0;
- Dose = 0;
- pData = NULL;
- PixelSpacing = 0;
- PixelRepresentation = 0;
- Rotation = 0;
- Flip = 0;
- OriginX = 0;
- OriginY = 0;
- Type = 0;
- };
- ~_IMAGE() {
- };
- unsigned short Width;
- unsigned short Height;
- unsigned short Bit;
- unsigned short TopOffset;
- unsigned short LeftOffset;
- unsigned short RightOffset;
- unsigned short BottomOffset;
- unsigned long ImageTag;
- unsigned long ImageIndex;
- unsigned short Year;
- BYTE Month;
- BYTE Day;
- BYTE Hour;
- BYTE Minute;
- BYTE Second;
- unsigned short MillonSecond;
- float LSB;
- float Dose;
- char *pData;
- float PixelSpacing;
- int PixelRepresentation; //0:0000H unsigned integer; 1:0001H 2's complement
- int Rotation; //Rotation degree clockwise
- int Flip;
- int OriginX;
- int OriginY;
- int Type;
- }IMAGE;
- typedef enum eSMCreateResult
- {
- SM_CREATE_FAILED = -1,
- SM_CREATE_SUCCESS = 0,
- SM_ALREADYEXIST,
- }SMCreateResult;
- typedef enum eSMOpenResult
- {
- SM_OPEN_FAILED = -1,
- SM_OPEN_SUCCESS = 0 ,
- }SMOpenResult;
- typedef enum eAccessFlag
- {
- SM_NOACCESS,
- SM_READONLY,
- SM_WRITEONLY,
- SM_READWRITE,
- }SMAccessFlag;
- typedef enum _ShareMemory_Type
- {
- SM_TYPE_BLOCK,
- SM_TYPE_CRICLE,
- SM_TYPE_QUEUE,
- SM_TYPE_MAX
- }SHAREMEMORYTYPE;
- union SHRAREMEMBLOCKID
- {
- DWORD dwShareMemBId;
- #pragma pack(1)
- struct
- {
- DWORD ShareMemId : 8;
- DWORD ResetCount : 8;
- DWORD BlockId : 16;
- }stShareMemBId;
- #pragma pack()
- };
- #define UnvalidSMBid 0xffffffff
- typedef DWORD ShareMemoryBlockID;
- typedef PVOID SMClientID;
- SHAREMEMORY_CLIENT_C_API int SMCreate(const char * path, int AccessFlags, DWORD size, SMClientID & SMinfo);//create包含open
- SHAREMEMORY_CLIENT_C_API bool SMDestroy(const char * path);
- SHAREMEMORY_CLIENT_C_API int SMOpen(const char * path, int AccessFlags, SMClientID & SMinfo);
- SHAREMEMORY_CLIENT_C_API int SMOpenById(unsigned char &ShareMemId, int AccessFlags, SMClientID & SMinfo);
- SHAREMEMORY_CLIENT_C_API bool SMClose(SMClientID SMinfo);
- SHAREMEMORY_CLIENT_C_API bool SMLock(SMClientID SMinfo, int timeout);
- SHAREMEMORY_CLIENT_C_API bool SMUnLock(SMClientID SMinfo);
- SHAREMEMORY_CLIENT_C_API bool SMSetSize(SMClientID SMinfo, DWORD size);
- SHAREMEMORY_CLIENT_C_API DWORD SMGetSize(SMClientID SMinfo);
- SHAREMEMORY_CLIENT_C_API bool SMWrite(SMClientID SMinfo, LPVOID buff, DWORD size);
- SHAREMEMORY_CLIENT_C_API bool SMRead(SMClientID SMinfo, LPVOID buff, DWORD size);
- SHAREMEMORY_CLIENT_C_API bool SMSeek(SMClientID SMinfo, DWORD position);
- SHAREMEMORY_CLIENT_C_API bool SMWriteEx(SMClientID SMinfo, DWORD position, LPVOID buff, DWORD size);
- SHAREMEMORY_CLIENT_C_API bool SMReadEx(SMClientID SMinfo, DWORD position, LPVOID buff, DWORD size);
- SHAREMEMORY_CLIENT_C_API bool SMSetSMCCtrl(SMClientID SMinfo, LPVOID buff, DWORD size);
- SHAREMEMORY_CLIENT_C_API bool SMGetSMCCtrl(SMClientID SMinfo, LPVOID buff, DWORD size);
- SHAREMEMORY_CLIENT_C_API LPVOID SMGetSMCCtrlAddress(SMClientID SMinfo);
- SHAREMEMORY_CLIENT_C_API LPVOID SMGetSMDataAddr(SMClientID SMCid, DWORD & DataSize);
- SHAREMEMORY_CLIENT_C_API DWORD SMInterLock(SMClientID SMinfo, DWORD timeout);
- SHAREMEMORY_CLIENT_C_API bool SMInterUnLock(SMClientID SMinfo);
- SHAREMEMORY_CLIENT_C_API DWORD SMInterLockExchange(SMClientID SMinfo, DWORD offset, DWORD timeout);
- SHAREMEMORY_CLIENT_C_API bool SMInterUnLockExchange(SMClientID SMinfo, DWORD offset);
- SHAREMEMORY_CLIENT_C_API DWORD SMLockSMCCtrl(SMClientID SMinfo, DWORD timeout);
- SHAREMEMORY_CLIENT_C_API bool SMUnLockSMCCtrl(SMClientID SMinfo);
- SHAREMEMORY_CLIENT_C_API bool ShareMemory_ClientStart(void);
- SHAREMEMORY_CLIENT_C_API bool ShareMemory_ClientStop(void);
|