#include "VirtualDeviceClass.h" #include "libHSPSCannerLoader.h" static VirtualDeviceClassImpl* object = NULL; DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass*& pOutDevAptObj) { ErrorCodeEnum result(Error_Unexpect); if (object == NULL) { char* buf; DWORD size; const char* var = "INVOKE_VENDOR_ADAPTER_NAME"; size = GetEnvironmentVariableA(var, NULL, 0); //ERROR_ENVVAR_NOT_FOUND if (size <= 0) { return Error_InvalidState; } buf = new char[size + 3]; if (buf == NULL) { return Error_Resource; } memset(buf, 0, sizeof(char) * (size + 3)); size = GetEnvironmentVariableA(var, buf, size); result = Bridge_LoadDevObject(buf); if (result == Error_Succeed) { object = new VirtualDeviceClassImpl(); } delete[] buf; } pOutDevAptObj = object; return result; } DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj) { ErrorCodeEnum result = Bridge_ReleaseDevObject(); if (result == Error_Succeed && pInDevAptObj != NULL) { delete pInDevAptObj; pInDevAptObj = NULL; } return result; } extern "C" DEVICEBASE_API void GetMoreErrorDetail(char *szErrMsg, DWORD* pMsgLen) { if (szErrMsg != NULL && pMsgLen != NULL && *pMsgLen > 0) { DevErrorInfo inner; ErrorCodeEnum result = Bridge_GetLastErr(&inner); if (result == Error_Succeed) { strcpy_s(szErrMsg, *pMsgLen, inner.szErrMsg); *pMsgLen = inner.dwErrMsgLen; } } } VirtualDeviceClassImpl::VirtualDeviceClassImpl() { } VirtualDeviceClassImpl::~VirtualDeviceClassImpl() { } ErrorCodeEnum VirtualDeviceClassImpl::GetDevCategory(DevCategoryInfo& devCategory) { ErrorCodeEnum result; DevCategoryInfo inner; result = Bridge_GetDevCategory(&inner); if (result == Error_Succeed) { strcpy_s(devCategory.szType, MAX_DEV_TYPE_LEN, inner.szType); strcpy_s(devCategory.szModel, MAX_DEV_MODEL_LEN, inner.szModel); strcpy_s(devCategory.szVendor, MAX_DEV_VENDOR_LEN, inner.szVendor); devCategory.eState = inner.eState; devCategory.version.wMajor = inner.version.wMajor; devCategory.version.wMinor = inner.version.wMinor; devCategory.version.wRevision = inner.version.wRevision; devCategory.version.wBuild = inner.version.wBuild; } return result; } ErrorCodeEnum VirtualDeviceClassImpl::Reset() { return Bridge_Reset(); } ErrorCodeEnum VirtualDeviceClassImpl::DevClose() { ErrorCodeEnum result = Error_Succeed; return (result = Bridge_DevClose()); } ErrorCodeEnum VirtualDeviceClassImpl::GetLastErr(DevErrorInfo& devErrInfo) { ErrorCodeEnum result = Error_Succeed; DevErrorInfo inner; result = Bridge_GetLastErr(&inner); if (result == Error_Succeed) { devErrInfo.dwErrMsgLen = inner.dwErrMsgLen; strcpy_s(devErrInfo.szErrMsg, MAX_DEV_ERROR_MSG_LEN, inner.szErrMsg); } return (result); } ErrorCodeEnum VirtualDeviceClassImpl::DevOpen() { ErrorCodeEnum result = Error_Succeed; return (result = Bridge_DevOpen()); } ErrorCodeEnum VirtualDeviceClassImpl::SetParam(ParamType type, ParamTypeValue value) { ErrorCodeEnum result = Error_Succeed; return (result = Bridge_SetParam(type, value)); } ErrorCodeEnum VirtualDeviceClassImpl::SetPreview(short nValue) { ErrorCodeEnum result = Error_Succeed; return (result = Bridge_SetPreview(nValue)); } ErrorCodeEnum VirtualDeviceClassImpl::ScanImage(const char* pszFileName) { ErrorCodeEnum result = Error_Succeed; return (result = Bridge_ScanImage(pszFileName)); } ErrorCodeEnum VirtualDeviceClassImpl::ScanImageEx(BYTE* pBtImg, int& nBtLen, const char* pszFileName /*= ""*/) { ErrorCodeEnum result = Error_Succeed; int inner = nBtLen; result = Bridge_ScanImageEx(pBtImg, &inner, pszFileName); nBtLen = inner; return result; } ErrorCodeEnum VirtualDeviceClassImpl::SetViewPos(int nX, int nY, int nWidth) { ErrorCodeEnum result = Error_Succeed; return (result = Bridge_SetViewPos(nX, nY, nWidth)); } ErrorCodeEnum VirtualDeviceClassImpl::SetProperty() { return Bridge_SetProperty(); } ErrorCodeEnum VirtualDeviceClassImpl::GetDevStatus(HspsDevStatus& status) { Bridge_HspsDevStatus inner; ErrorCodeEnum result = Error_Succeed; result = Bridge_GetDevStatus(&inner); if (result == Error_Succeed) { status.isConnected = inner.isConnected; status.inPreview = inner.inPreview; status.inShow = inner.inShow; } return result; } //SubClassStart