|
@@ -1812,7 +1812,117 @@ void CHealthManagerEntity::QueryHardwareInfo(SpReqAnsContext<HealthManagerServic
|
|
|
ctx->Ans.termLimit = __ReadCenterConfigStr("TermLimitSwitch", "IEBrowser");
|
|
|
ctx->Ans.termVersion = info.InstallVersion.ToString();
|
|
|
|
|
|
- ctx->Answer(Error_Succeed);
|
|
|
+ CSimpleStringA deviceFct("");
|
|
|
+#if defined(_MSC_VER)
|
|
|
+ //oiltmp 备注reserved3、reserved4这是什么情况下用的?看得莫名其妙,在一个常用调用接口里面每次都取,这是不怕亚信?
|
|
|
+ //reserved3, 获取windows系统版本
|
|
|
+ DWORD dwMajorVer, dwMinorVer, dwBuildNumber;
|
|
|
+ BOOL bRet = FALSE;
|
|
|
+ HMODULE hModNtdll = NULL;
|
|
|
+ if (hModNtdll = ::LoadLibraryW(L"ntdll.dll")) {
|
|
|
+ typedef void (WINAPI* pfRTLGETNTVERSIONNUMBERS)(DWORD*, DWORD*, DWORD*);
|
|
|
+ pfRTLGETNTVERSIONNUMBERS pfRtlGetNtVersionNumbers;
|
|
|
+ pfRtlGetNtVersionNumbers = (pfRTLGETNTVERSIONNUMBERS)::GetProcAddress(hModNtdll, "RtlGetNtVersionNumbers");
|
|
|
+ if (pfRtlGetNtVersionNumbers) {
|
|
|
+ pfRtlGetNtVersionNumbers(&dwMajorVer, &dwMinorVer, &dwBuildNumber);
|
|
|
+ dwBuildNumber &= 0x0ffff;
|
|
|
+ bRet = TRUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ ::FreeLibrary(hModNtdll);
|
|
|
+ hModNtdll = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ //reserved4
|
|
|
+ char buffer[1024];
|
|
|
+ sprintf(buffer, "%d.%d.%d", dwMajorVer, dwMinorVer, dwBuildNumber);
|
|
|
+ string sysVer = "Windows ver[" + string(buffer) + "]";
|
|
|
+ ctx->Ans.reserved3 = CSimpleStringA(sysVer.c_str());
|
|
|
+
|
|
|
+ // pad设备厂商为Microsoft, 其他设备读取root中的pinpad字段下的vendor
|
|
|
+ if (info.strMachineType == "RVC.PAD") {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("This is PAD device.");
|
|
|
+ deviceFct = "Microsoft";
|
|
|
+ } else {
|
|
|
+ CSmartPointer<IConfigInfo> spConfig;
|
|
|
+ GetEntityBase()->GetFunction()->OpenConfig(Config_Root, spConfig);
|
|
|
+ spConfig->ReadConfigValue("Device.PinPad", "Vendor", deviceFct);
|
|
|
+ }
|
|
|
+ ctx->Ans.reserved4 = deviceFct;
|
|
|
+#else
|
|
|
+ ctx->Ans.reserved3 = "UOS";
|
|
|
+ CSmartPointer<IConfigInfo> spConfig;
|
|
|
+ GetFunction()->OpenConfig(Config_Root, spConfig);
|
|
|
+ spConfig->ReadConfigValue("Device.PinPad", "Vendor", deviceFct);
|
|
|
+#endif //_MSC_VER
|
|
|
+
|
|
|
+ //reserved1
|
|
|
+#ifdef DEVOPS_ON_ST /*DevOps流水线编译,ST环境*/
|
|
|
+ ctx->Ans.reserved1 = 1;
|
|
|
+#elif defined(DEVOPS_ON_UAT)/*DevOps流水线编译,UAT环境*/
|
|
|
+ ctx->Ans.reserved1 = 2;
|
|
|
+#elif defined(DEVOPS_ON_PRD)/*DevOps流水线编译,PRD环境*/
|
|
|
+ ctx->Ans.reserved1 = 3;
|
|
|
+#elif defined(DEVOPS_ON_DEV)/*DevOps流水线编译,Dev环境*/
|
|
|
+ ctx->Ans.reserved1 = 0;
|
|
|
+#else/*本地编译等非DevOps环境编译的版本*/
|
|
|
+ ctx->Ans.reserved1 = 0;
|
|
|
+#endif
|
|
|
+
|
|
|
+ //oilyang@20230518 用来标注支持搜狗输入法新旧模式
|
|
|
+ //0:旧模式 1:新模式(TODO 待搜狗确定如何判断新旧)
|
|
|
+ ctx->Ans.reserved2 = 0;
|
|
|
+ ResourceWatcherService_ClientBase* pClient = new ResourceWatcherService_ClientBase(this);
|
|
|
+ ErrorCodeEnum ec = pClient->Connect();
|
|
|
+ if (IS_SUCCEED(ec)) {
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to Connect ResourceWatcher...");
|
|
|
+ ResourceWatcherService_GetThirdPartyInstallState_Req req = {};
|
|
|
+ ResourceWatcherService_GetThirdPartyInstallState_Ans ans = {};
|
|
|
+ req.mode = 1;
|
|
|
+ ec = pClient->GetThirdPartyInstallState(req, ans, 15000);
|
|
|
+ if (IS_SUCCEED(ec)) {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Get Sogou version: %s", ans.version.GetData());
|
|
|
+ //搜狗提供的普通调用版本开始的版本号,高于或等于这个版本则为系统调用方式,低于则为SDK方式
|
|
|
+ CVersion sysVersionStart(2, 6, 4, 329);
|
|
|
+ WORD nMajor(0), nMinor(0), nRevision(0), nBulid(0);
|
|
|
+ if (!ans.version.IsNullOrEmpty()) {
|
|
|
+ CAutoArray<CSimpleStringA> versionElems = ans.version.Split('.');
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Elems count: %d", versionElems.GetCount());
|
|
|
+ if (versionElems.GetCount() >= 1) {
|
|
|
+ nMajor = atoi(versionElems[0]);
|
|
|
+ }
|
|
|
+ if (versionElems.GetCount() >= 2) {
|
|
|
+ nMinor = atoi(versionElems[1]);
|
|
|
+ }
|
|
|
+ if (versionElems.GetCount() >= 3) {
|
|
|
+ nRevision = atoi(versionElems[2]);
|
|
|
+ }
|
|
|
+ if (versionElems.GetCount() >= 4) {
|
|
|
+ nBulid = atoi(versionElems[3]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ CVersion curVersion(nMajor, nMinor, nRevision, nBulid);
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Get Sogou version r: %s vs %s", curVersion.ToString().GetData(),
|
|
|
+ sysVersionStart.ToString().GetData());
|
|
|
+ DWORD dwUserCode(HealthManager_UserErrorCode_SogouInput_UsingSDK);
|
|
|
+ if (curVersion >= sysVersionStart) {
|
|
|
+ dwUserCode = HealthManager_UserErrorCode_SogouInput_UsingSys;
|
|
|
+ ctx->Ans.reserved2 = 1;
|
|
|
+ }
|
|
|
+ LogWarn(Severity_Low, Error_Debug, dwUserCode,
|
|
|
+ CSimpleStringA::Format("{\"version\": %s,\"installTime\": %s}", curVersion.ToString().GetData(), ans.reserverd1.GetData()));
|
|
|
+ } else {
|
|
|
+ LogWarn(Severity_Low, ec, HealthManager_UserErrorCode_SogouInput_UsingSDK,
|
|
|
+ CSimpleStringA::Format("ResourceWatcher::GetThirdPartyInstallState invoked failed: %s", SpStrError(ec)));
|
|
|
+ }
|
|
|
+ pClient->GetFunction()->CloseSession();
|
|
|
+ } else {
|
|
|
+ LogWarn(Severity_Low, ec, HealthManager_UserErrorCode_SogouInput_UsingSDK,
|
|
|
+ CSimpleStringA::Format("Connet to ResourceWatcher failed: %s", SpStrError(ec)));
|
|
|
+ pClient->SafeDelete();
|
|
|
+ }
|
|
|
+
|
|
|
+ ctx->Answer(Error_Succeed);
|
|
|
}
|
|
|
void CHealthManagerEntity::ReadCenterConfigStr(SpReqAnsContext<HealthManagerService_ReadCenterConfigStr_Req, HealthManagerService_ReadCenterConfigStr_Ans>::Pointer ctx)
|
|
|
{
|