VirtualDeviceClass.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. #include "VirtualDeviceClass.h"
  2. #include "libHSPSCannerLoader.h"
  3. static VirtualDeviceClassImpl* object = NULL;
  4. DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass*& pOutDevAptObj)
  5. {
  6. ErrorCodeEnum result(Error_Unexpect);
  7. if (object == NULL) {
  8. char* buf;
  9. DWORD size;
  10. const char* var = "INVOKE_VENDOR_ADAPTER_NAME";
  11. size = GetEnvironmentVariableA(var, NULL, 0);
  12. //ERROR_ENVVAR_NOT_FOUND
  13. if (size <= 0) {
  14. return Error_InvalidState;
  15. }
  16. buf = new char[size + 3];
  17. if (buf == NULL) {
  18. return Error_Resource;
  19. }
  20. memset(buf, 0, sizeof(char) * (size + 3));
  21. size = GetEnvironmentVariableA(var, buf, size);
  22. result = Bridge_LoadDevObject(buf);
  23. if (result == Error_Succeed) {
  24. object = new VirtualDeviceClassImpl();
  25. }
  26. delete[] buf;
  27. }
  28. pOutDevAptObj = object;
  29. return result;
  30. }
  31. DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj)
  32. {
  33. ErrorCodeEnum result = Bridge_ReleaseDevObject();
  34. if (result == Error_Succeed && pInDevAptObj != NULL) {
  35. delete pInDevAptObj;
  36. pInDevAptObj = NULL;
  37. }
  38. return result;
  39. }
  40. extern "C" DEVICEBASE_API void GetMoreErrorDetail(char *szErrMsg, DWORD* pMsgLen)
  41. {
  42. if (szErrMsg != NULL && pMsgLen != NULL && *pMsgLen > 0) {
  43. DevErrorInfo inner;
  44. ErrorCodeEnum result = Bridge_GetLastErr(&inner);
  45. if (result == Error_Succeed) {
  46. strcpy_s(szErrMsg, *pMsgLen, inner.szErrMsg);
  47. *pMsgLen = inner.dwErrMsgLen;
  48. }
  49. }
  50. }
  51. VirtualDeviceClassImpl::VirtualDeviceClassImpl()
  52. {
  53. }
  54. VirtualDeviceClassImpl::~VirtualDeviceClassImpl()
  55. {
  56. }
  57. ErrorCodeEnum VirtualDeviceClassImpl::GetDevCategory(DevCategoryInfo& devCategory)
  58. {
  59. ErrorCodeEnum result;
  60. DevCategoryInfo inner;
  61. result = Bridge_GetDevCategory(&inner);
  62. if (result == Error_Succeed) {
  63. strcpy_s(devCategory.szType, MAX_DEV_TYPE_LEN, inner.szType);
  64. strcpy_s(devCategory.szModel, MAX_DEV_MODEL_LEN, inner.szModel);
  65. strcpy_s(devCategory.szVendor, MAX_DEV_VENDOR_LEN, inner.szVendor);
  66. devCategory.eState = inner.eState;
  67. devCategory.version.wMajor = inner.version.wMajor;
  68. devCategory.version.wMinor = inner.version.wMinor;
  69. devCategory.version.wRevision = inner.version.wRevision;
  70. devCategory.version.wBuild = inner.version.wBuild;
  71. }
  72. return result;
  73. }
  74. ErrorCodeEnum VirtualDeviceClassImpl::Reset()
  75. {
  76. return Bridge_Reset();
  77. }
  78. ErrorCodeEnum VirtualDeviceClassImpl::DevClose()
  79. {
  80. ErrorCodeEnum result = Error_Succeed;
  81. return (result = Bridge_DevClose());
  82. }
  83. ErrorCodeEnum VirtualDeviceClassImpl::GetLastErr(DevErrorInfo& devErrInfo)
  84. {
  85. ErrorCodeEnum result = Error_Succeed;
  86. DevErrorInfo inner;
  87. result = Bridge_GetLastErr(&inner);
  88. if (result == Error_Succeed) {
  89. devErrInfo.dwErrMsgLen = inner.dwErrMsgLen;
  90. strcpy_s(devErrInfo.szErrMsg, MAX_DEV_ERROR_MSG_LEN, inner.szErrMsg);
  91. }
  92. return (result);
  93. }
  94. ErrorCodeEnum VirtualDeviceClassImpl::DevOpen()
  95. {
  96. ErrorCodeEnum result = Error_Succeed;
  97. return (result = Bridge_DevOpen());
  98. }
  99. ErrorCodeEnum VirtualDeviceClassImpl::SetParam(ParamType type, ParamTypeValue value)
  100. {
  101. ErrorCodeEnum result = Error_Succeed;
  102. return (result = Bridge_SetParam(type, value));
  103. }
  104. ErrorCodeEnum VirtualDeviceClassImpl::SetPreview(short nValue)
  105. {
  106. ErrorCodeEnum result = Error_Succeed;
  107. return (result = Bridge_SetPreview(nValue));
  108. }
  109. ErrorCodeEnum VirtualDeviceClassImpl::ScanImage(const char* pszFileName)
  110. {
  111. ErrorCodeEnum result = Error_Succeed;
  112. return (result = Bridge_ScanImage(pszFileName));
  113. }
  114. ErrorCodeEnum VirtualDeviceClassImpl::ScanImageEx(BYTE* pBtImg, int& nBtLen, const char* pszFileName /*= ""*/)
  115. {
  116. ErrorCodeEnum result = Error_Succeed;
  117. int inner = nBtLen;
  118. result = Bridge_ScanImageEx(pBtImg, &inner, pszFileName);
  119. nBtLen = inner;
  120. return result;
  121. }
  122. ErrorCodeEnum VirtualDeviceClassImpl::SetViewPos(int nX, int nY, int nWidth)
  123. {
  124. ErrorCodeEnum result = Error_Succeed;
  125. return (result = Bridge_SetViewPos(nX, nY, nWidth));
  126. }
  127. ErrorCodeEnum VirtualDeviceClassImpl::SetProperty()
  128. {
  129. return Bridge_SetProperty();
  130. }
  131. ErrorCodeEnum VirtualDeviceClassImpl::GetDevStatus(HspsDevStatus& status)
  132. {
  133. Bridge_HspsDevStatus inner;
  134. ErrorCodeEnum result = Error_Succeed;
  135. result = Bridge_GetDevStatus(&inner);
  136. if (result == Error_Succeed) {
  137. status.isConnected = inner.isConnected;
  138. status.inPreview = inner.inPreview;
  139. status.inShow = inner.inShow;
  140. }
  141. return result;
  142. }
  143. //SubClassStart