123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352 |
- #include "VirtualDeviceClass.h"
- #include "libIDCertificateLoader.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(DWORD dwPort)
- {
- ErrorCodeEnum result = Error_Succeed;
- return (result = Bridge_DevOpen(dwPort));
- }
- ErrorCodeEnum VirtualDeviceClassImpl::IDCerRFControl(bool bControl)
- {
- ErrorCodeEnum result = Error_Succeed;
- return (result = Bridge_IDCerRFControl(bControl ? 1: 0));
- }
- ErrorCodeEnum VirtualDeviceClassImpl::IDCerAuthenticate()
- {
- ErrorCodeEnum result = Error_Succeed;
- return (result = Bridge_IDCerAuthenticate());
- }
- ErrorCodeEnum VirtualDeviceClassImpl::IDCerGetData(IDCerInfo& idCerInfo)
- {
- Bridge_IDCerInfo inner;
- memset(&inner, 0, sizeof(inner));
- ErrorCodeEnum result = Error_Unexpect;
- result = Bridge_IDCerGetData(&inner);
- if (result == Error_Succeed)
- {
- memcpy(idCerInfo.name.data, inner.name.data, MAX_IDCER_INFO_SIZE);
- idCerInfo.name.dwSize = inner.name.dwSize;
- memcpy(idCerInfo.sex.data, inner.sex.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfo.sex.dwSize = inner.sex.dwSize;
- memcpy(idCerInfo.nation.data, inner.nation.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfo.nation.dwSize = inner.nation.dwSize;
- memcpy(idCerInfo.birthday.data, inner.birthday.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfo.birthday.dwSize = inner.birthday.dwSize;
- memcpy(idCerInfo.address.data, inner.address.data, MAX_IDCER_INFO_SIZE);
- idCerInfo.address.dwSize = inner.address.dwSize;
- memcpy(idCerInfo.idno.data, inner.idno.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfo.idno.dwSize = inner.idno.dwSize;
- memcpy(idCerInfo.department.data, inner.department.data, MAX_IDCER_INFO_SIZE);
- idCerInfo.department.dwSize = inner.department.dwSize;
- memcpy(idCerInfo.startDate.data, inner.startDate.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfo.startDate.dwSize = inner.startDate.dwSize;
- memcpy(idCerInfo.endDate.data, inner.endDate.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfo.endDate.dwSize = inner.endDate.dwSize;
- memcpy(idCerInfo.newAddress.data, inner.newAddress.data, MAX_IDCER_INFO_SIZE);
- idCerInfo.newAddress.dwSize = inner.newAddress.dwSize;
- memcpy(idCerInfo.photoPath.data, inner.photoPath.data, MAX_IDCER_PHOTO_PATH);
- idCerInfo.photoPath.dwSize = inner.photoPath.dwSize;
- }
- return result;
- }
- ErrorCodeEnum VirtualDeviceClassImpl::IDCerGetDataEx(IDCerInfoEx& idCerInfoEx)
- {
- Bridge_IDCerInfoEx inner;
- memset(&inner, 0, sizeof(inner));
- ErrorCodeEnum result = Error_Unexpect;
- result = Bridge_IDCerGetDataEx(&inner);
- if (result == Error_Succeed)
- {
- memcpy(idCerInfoEx.name.data, inner.name.data, MAX_IDCER_INFO_SIZE);
- idCerInfoEx.name.dwSize = inner.name.dwSize;
- memcpy(idCerInfoEx.sex.data, inner.sex.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx.sex.dwSize = inner.sex.dwSize;
- memcpy(idCerInfoEx.nation.data, inner.nation.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx.nation.dwSize = inner.nation.dwSize;
- memcpy(idCerInfoEx.birthday.data, inner.birthday.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx.birthday.dwSize = inner.birthday.dwSize;
- memcpy(idCerInfoEx.address.data, inner.address.data, MAX_IDCER_INFO_SIZE);
- idCerInfoEx.address.dwSize = inner.address.dwSize;
- memcpy(idCerInfoEx.idno.data, inner.idno.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx.idno.dwSize = inner.idno.dwSize;
- memcpy(idCerInfoEx.department.data, inner.department.data, MAX_IDCER_INFO_SIZE);
- idCerInfoEx.department.dwSize = inner.department.dwSize;
- memcpy(idCerInfoEx.startDate.data, inner.startDate.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx.startDate.dwSize = inner.startDate.dwSize;
- memcpy(idCerInfoEx.endDate.data, inner.endDate.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx.endDate.dwSize = inner.endDate.dwSize;
- memcpy(idCerInfoEx.newAddress.data, inner.newAddress.data, MAX_IDCER_INFO_SIZE);
- idCerInfoEx.newAddress.dwSize = inner.newAddress.dwSize;
- memcpy(idCerInfoEx.photoPath.data, inner.photoPath.data, MAX_IDCER_PHOTO_PATH);
- idCerInfoEx.photoPath.dwSize = inner.photoPath.dwSize;
- memcpy(idCerInfoEx.englishName.data, inner.englishName.data, MAX_IDCER_INFO_SIZE);
- idCerInfoEx.englishName.dwSize = inner.englishName.dwSize;
- memcpy(idCerInfoEx.nationality.data, inner.nationality.data, IDCER_EIGHT_BYTE_SIZE);
- idCerInfoEx.nationality.dwSize = inner.nationality.dwSize;
- memcpy(idCerInfoEx.idVersion.data, inner.idVersion.data, IDCER_EIGHT_BYTE_SIZE);
- idCerInfoEx.idVersion.dwSize = inner.idVersion.dwSize;
- memcpy(idCerInfoEx.idType.data, inner.idType.data, IDCER_EIGHT_BYTE_SIZE);
- idCerInfoEx.idType.dwSize = inner.idType.dwSize;
- memcpy(idCerInfoEx.reserved.data, inner.reserved.data, IDCER_EIGHT_BYTE_SIZE);
- idCerInfoEx.reserved.dwSize = inner.reserved.dwSize;
- memcpy(idCerInfoEx.txzCode.data, inner.txzCode.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx.txzCode.dwSize = inner.txzCode.dwSize;
- memcpy(idCerInfoEx.issuedSN.data, inner.issuedSN.data, IDCER_EIGHT_BYTE_SIZE);
- idCerInfoEx.issuedSN.dwSize = inner.issuedSN.dwSize;
- memcpy(idCerInfoEx.reserved2.data, inner.reserved2.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx.reserved2.dwSize = inner.reserved2.dwSize;
- memcpy(idCerInfoEx.reserved3.data, inner.reserved3.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx.reserved3.dwSize = inner.reserved3.dwSize;
- memcpy(idCerInfoEx.reserved4.data, inner.reserved4.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx.reserved4.dwSize = inner.reserved4.dwSize;
- memcpy(idCerInfoEx.reserved5.data, inner.reserved5.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx.reserved5.dwSize = inner.reserved5.dwSize;
- }
- return result;
- }
- ErrorCodeEnum VirtualDeviceClassImpl::ForceIDEject()
- {
- ErrorCodeEnum result = Error_Succeed;
- return (result = Bridge_ForceIDEject());
- }
- ErrorCodeEnum VirtualDeviceClassImpl::ScanIDAndSaveImage()
- {
- ErrorCodeEnum result = Error_Succeed;
- return (result = Bridge_ScanIDAndSaveImage());
- }
- ErrorCodeEnum VirtualDeviceClassImpl::QueryCardPos(int& pos)
- {
- ErrorCodeEnum result = Error_Unexpect;
- int inner;
- result = Bridge_QueryCardPos(&inner);
- if (result == Error_Succeed)
- {
- pos = inner;
- }
- return result;
- }
- ErrorCodeEnum VirtualDeviceClassImpl::IDCerGetDataEx2(IDCerInfoEx2& idCerInfoEx2)
- {
- ErrorCodeEnum result = Error_Unexpect;
- Bridge_IDCerInfoEx2 inner;
- memset(&inner, 0, sizeof(inner));
- result = Bridge_IDCerGetDataEx2(&inner);
- if (result == Error_Succeed)
- {
- memcpy(idCerInfoEx2.name.data, inner.name.data, MAX_IDCER_INFO_SIZE);
- idCerInfoEx2.name.dwSize = inner.name.dwSize;
- memcpy(idCerInfoEx2.sex.data, inner.sex.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx2.sex.dwSize = inner.sex.dwSize;
- memcpy(idCerInfoEx2.nation.data, inner.nation.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx2.nation.dwSize = inner.nation.dwSize;
- memcpy(idCerInfoEx2.birthday.data, inner.birthday.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx2.birthday.dwSize = inner.birthday.dwSize;
- memcpy(idCerInfoEx2.address.data, inner.address.data, MAX_IDCER_INFO_SIZE);
- idCerInfoEx2.address.dwSize = inner.address.dwSize;
- memcpy(idCerInfoEx2.idno.data, inner.idno.data, 2 * MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx2.idno.dwSize = inner.idno.dwSize;
- memcpy(idCerInfoEx2.department.data, inner.department.data, MAX_IDCER_INFO_SIZE);
- idCerInfoEx2.department.dwSize = inner.department.dwSize;
- memcpy(idCerInfoEx2.startDate.data, inner.startDate.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx2.startDate.dwSize = inner.startDate.dwSize;
- memcpy(idCerInfoEx2.endDate.data, inner.endDate.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx2.endDate.dwSize = inner.endDate.dwSize;
- memcpy(idCerInfoEx2.newAddress.data, inner.newAddress.data, MAX_IDCER_INFO_SIZE);
- idCerInfoEx2.newAddress.dwSize = inner.newAddress.dwSize;
- memcpy(idCerInfoEx2.photoPath.data, inner.photoPath.data, MAX_IDCER_PHOTO_PATH);
- idCerInfoEx2.photoPath.dwSize = inner.photoPath.dwSize;
- memcpy(idCerInfoEx2.englishName.data, inner.englishName.data, MAX_IDCER_INFO_SIZE);
- idCerInfoEx2.englishName.dwSize = inner.englishName.dwSize;
- memcpy(idCerInfoEx2.nationality.data, inner.nationality.data, IDCER_EIGHT_BYTE_SIZE);
- idCerInfoEx2.nationality.dwSize = inner.nationality.dwSize;
- memcpy(idCerInfoEx2.idVersion.data, inner.idVersion.data, IDCER_EIGHT_BYTE_SIZE);
- idCerInfoEx2.idVersion.dwSize = inner.idVersion.dwSize;
- memcpy(idCerInfoEx2.idType.data, inner.idType.data, IDCER_EIGHT_BYTE_SIZE);
- idCerInfoEx2.idType.dwSize = inner.idType.dwSize;
- memcpy(idCerInfoEx2.reserved.data, inner.reserved.data, IDCER_EIGHT_BYTE_SIZE);
- idCerInfoEx2.reserved.dwSize = inner.reserved.dwSize;
- memcpy(idCerInfoEx2.txzCode.data, inner.txzCode.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx2.txzCode.dwSize = inner.txzCode.dwSize;
- memcpy(idCerInfoEx2.issuedSN.data, inner.issuedSN.data, IDCER_EIGHT_BYTE_SIZE);
- idCerInfoEx2.issuedSN.dwSize = inner.issuedSN.dwSize;
- memcpy(idCerInfoEx2.reserved2.data, inner.reserved2.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx2.reserved2.dwSize = inner.reserved2.dwSize;
- memcpy(idCerInfoEx2.reserved3.data, inner.reserved3.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx2.reserved3.dwSize = inner.reserved3.dwSize;
- memcpy(idCerInfoEx2.reserved4.data, inner.reserved4.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx2.reserved4.dwSize = inner.reserved4.dwSize;
- memcpy(idCerInfoEx2.reserved5.data, inner.reserved5.data, MAX_IDCER_SIMPLE_INFO_SIZE);
- idCerInfoEx2.reserved5.dwSize = inner.reserved5.dwSize;
- }
- return result;
- }
- //SubClassStart
|