123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 |
- // libIDCertificateLoader.cpp : 定义 DLL 应用程序的导出函数。
- //
- #include "stdafx.h"
- #include <stdio.h>
- #include "libIDCertificateLoader.h"
- typedef ErrorCodeEnum(*DevAdaptObjCreateFunc)(DeviceBaseClass*& baseObj);
- typedef ErrorCodeEnum(*DevAdaptObjReleaseFunc)(DeviceBaseClass*& pBaseObj);
- HINSTANCE hinstLib = NULL;
- DevAdaptObjCreateFunc pFuncCreateAdapt = NULL;
- DevAdaptObjReleaseFunc pFuncReleaseAdapt = NULL;
- IDCerClass* pDevAdapterInstance = NULL;
- struct DevErrorInfo errInfoInstance;
- void SetLastErrInfo(const char* formatStr, ...)
- {
- va_list arg;
- va_start(arg, formatStr);
- vsprintf_s(errInfoInstance.szErrMsg, MAX_DEV_ERROR_MSG_LEN, formatStr, arg);
- errInfoInstance.dwErrMsgLen = strlen(errInfoInstance.szErrMsg);
- va_end(arg);
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_LoadDevObject(const char* libraryPath)
- {
- ErrorCodeEnum erroCode;
- hinstLib = LoadLibraryA(libraryPath);
- if (hinstLib != NULL) {
- pFuncCreateAdapt = (DevAdaptObjCreateFunc)GetProcAddress(hinstLib, "CreateDevComponent");
- if (NULL == pFuncCreateAdapt) {
- SetLastErrInfo("{\"ErrCode\":%u, \"Description\":\"Func:%s,Line:%d,Msg:GetProcAddress for CreateDevComponent\"}", GetLastError(), __FUNCTION__, __LINE__);
- FreeLibrary(hinstLib);
- pFuncCreateAdapt = NULL;
- pFuncReleaseAdapt = NULL;
- return Error_MisMatched;
- }
- pFuncReleaseAdapt = (DevAdaptObjReleaseFunc)GetProcAddress(hinstLib, "ReleaseDevComponent");
- if (NULL == pFuncCreateAdapt) {
- SetLastErrInfo("{\"ErrCode\":%u, \"Description\":\"Func:%s,Line:%d,Msg:GetProcAddress for ReleaseDevComponent\"}", GetLastError(), __FUNCTION__, __LINE__);
- FreeLibrary(hinstLib);
- pFuncCreateAdapt = NULL;
- pFuncReleaseAdapt = NULL;
- return Error_NotIntegrated;
- }
- erroCode = pFuncCreateAdapt((DeviceBaseClass*&)pDevAdapterInstance);
- if (erroCode != Error_Succeed) {
- SetLastErrInfo("{\"ErrCode\":%u, \"RetCode\":%u, \"Description\":\"Func:%s,Line:%d,Msg:pFuncCreateAdapt for AdapterObject\"}", GetLastError(), erroCode, __FUNCTION__, __LINE__);
- pDevAdapterInstance = NULL;
- FreeLibrary(hinstLib);
- pFuncCreateAdapt = NULL;
- pFuncReleaseAdapt = NULL;
- return Error_NoTarget;
- }
- if (pDevAdapterInstance == NULL) {
- SetLastErrInfo("{\"ErrCode\":%u, \"Description\":\"Func:%s,Line:%d,Msg:pFuncCreateAdapt return Null AdapterObject\"}", GetLastError(), __FUNCTION__, __LINE__);
- FreeLibrary(hinstLib);
- pFuncCreateAdapt = NULL;
- pFuncReleaseAdapt = NULL;
- return Error_Null;
- }
- } else {
- SetLastErrInfo("{\"ErrCode\":%u, \"Description\":\"Func:%s,Line:%d,Msg:LoadLibraryA current adapter file failed\"}", GetLastError(), __FUNCTION__, __LINE__);
- return Error_DevLoadFileFailed;
- }
- return Error_Succeed;
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_ReleaseDevObject()
- {
- if (pFuncReleaseAdapt != NULL && pDevAdapterInstance != NULL) {
- DeviceBaseClass* devBasePtr = static_cast<DeviceBaseClass*>(pDevAdapterInstance);
- pFuncReleaseAdapt(devBasePtr);
- pDevAdapterInstance = NULL;
- }
- if (hinstLib != NULL) {
- FreeLibrary(hinstLib);
- hinstLib = NULL;
- }
- return Error_Succeed;
- }
- //////////////////////////////////////////////////////////////////////////
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_GetDevCategory(DevCategoryInfo* pDevCategory)
- {
- ErrorCodeEnum result;
- if (pDevAdapterInstance == NULL) {
- return Error_NotInit;
- }
- DevCategoryInfo inner;
- memset(inner.szType, 0, sizeof(char) * MAX_DEV_TYPE_LEN);
- memset(inner.szModel, 0, sizeof(char) * MAX_DEV_MODEL_LEN);
- memset(inner.szVendor, 0, sizeof(char) * MAX_DEV_VENDOR_LEN);
- result = pDevAdapterInstance->GetDevCategory(inner);
- if (result == Error_Succeed) {
- memset(pDevCategory->szType, 0, sizeof(char) * MAX_DEV_TYPE_LEN);
- memset(pDevCategory->szModel, 0, sizeof(char) * MAX_DEV_MODEL_LEN);
- memset(pDevCategory->szVendor, 0, sizeof(char) * MAX_DEV_VENDOR_LEN);
- strncpy_s(pDevCategory->szType, MAX_DEV_TYPE_LEN, inner.szType, strlen(inner.szType) > MAX_DEV_TYPE_LEN - 1 ? MAX_DEV_TYPE_LEN - 1 : strlen(inner.szType));
- strncpy_s(pDevCategory->szModel, MAX_DEV_MODEL_LEN, inner.szModel, strlen(inner.szModel) > MAX_DEV_MODEL_LEN - 1 ? MAX_DEV_TYPE_LEN - 1 : strlen(inner.szModel));
- strncpy_s(pDevCategory->szVendor, MAX_DEV_VENDOR_LEN, inner.szVendor, strlen(inner.szVendor) > MAX_DEV_VENDOR_LEN - 1 ? MAX_DEV_TYPE_LEN - 1 : strlen(inner.szVendor));
- pDevCategory->eState = inner.eState;
- pDevCategory->version.wMajor = inner.version.wMajor;
- pDevCategory->version.wMinor = inner.version.wMinor;
- pDevCategory->version.wRevision = inner.version.wRevision;
- pDevCategory->version.wBuild = inner.version.wBuild;
- }
- return result;
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_Reset()
- {
- if (pDevAdapterInstance == NULL) {
- return Error_NotInit;
- }
- return pDevAdapterInstance->Reset();
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_DevClose()
- {
- if (pDevAdapterInstance == NULL) {
- return Error_NotInit;
- }
- return pDevAdapterInstance->DevClose();
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_GetLastErr(DevErrorInfo* pDevErrInfo)
- {
- if (pDevAdapterInstance == NULL) {
- strcpy_s(pDevErrInfo->szErrMsg, MAX_DEV_ERROR_MSG_LEN, errInfoInstance.szErrMsg);
- pDevErrInfo->dwErrMsgLen = errInfoInstance.dwErrMsgLen;
- return Error_Succeed;
- }
- DevErrorInfo inner;
- ErrorCodeEnum result = pDevAdapterInstance->GetLastErr(inner);
- if (result == Error_Succeed) {
- memset(pDevErrInfo->szErrMsg, 0, sizeof(char) * MAX_DEV_ERROR_MSG_LEN);
- strncpy_s(pDevErrInfo->szErrMsg, MAX_DEV_ERROR_MSG_LEN, inner.szErrMsg, strlen(inner.szErrMsg) > MAX_DEV_ERROR_MSG_LEN - 1 ? MAX_DEV_ERROR_MSG_LEN - 1 : strlen(inner.szErrMsg));
- pDevErrInfo->dwErrMsgLen = inner.dwErrMsgLen;
- }
- return result;
- }
- //////////////////////////////////////////////////////////////////////////
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_DevOpen(DWORD dwPort)
- {
- if (pDevAdapterInstance == NULL) {
- return Error_NotInit;
- }
- return pDevAdapterInstance->DevOpen(dwPort);
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_IDCerRFControl(int bControl)
- {
- if (pDevAdapterInstance == NULL) {
- return Error_NotInit;
- }
- return pDevAdapterInstance->IDCerRFControl(!!bControl);
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_IDCerAuthenticate()
- {
- if (pDevAdapterInstance == NULL) {
- return Error_NotInit;
- }
- return pDevAdapterInstance->IDCerAuthenticate();
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_IDCerGetData(Bridge_IDCerInfo* idCerInfo)
- {
- if (pDevAdapterInstance == NULL) {
- return Error_NotInit;
- }
- IDCerInfo inner;
- memset(&inner, 0, sizeof(inner));
- ErrorCodeEnum result = pDevAdapterInstance->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;
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_IDCerGetDataEx(Bridge_IDCerInfoEx* idCerInfoEx)
- {
- if (pDevAdapterInstance == NULL) {
- return Error_NotInit;
- }
- IDCerInfoEx inner;
- memset(&inner, 0, sizeof(inner));
- ErrorCodeEnum result = pDevAdapterInstance->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;
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_ForceIDEject()
- {
- if (pDevAdapterInstance == NULL) {
- return Error_NotInit;
- }
- return pDevAdapterInstance->ForceIDEject();
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_ScanIDAndSaveImage()
- {
- if (pDevAdapterInstance == NULL) {
- return Error_NotInit;
- }
- return pDevAdapterInstance->ScanIDAndSaveImage();
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_QueryCardPos(int* pos)
- {
- if (pDevAdapterInstance == NULL) {
- return Error_NotInit;
- }
- int inner;
- ErrorCodeEnum result = pDevAdapterInstance->QueryCardPos(inner);
- if (result == Error_Succeed)
- {
- *pos = inner;
- }
- return result;
- }
- LIBSUBDEVICELOADER_API ErrorCodeEnum Bridge_IDCerGetDataEx2(Bridge_IDCerInfoEx2* idCerInfoEx2)
- {
- if (pDevAdapterInstance == NULL) {
- return Error_NotInit;
- }
- IDCerInfoEx2 inner;
- memset(&inner, 0, sizeof(inner));
- ErrorCodeEnum result = pDevAdapterInstance->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;
- }
|