Kaynağa Gözat

Z991239-6390 #comment 获取系统错误

80374374 2 ay önce
ebeveyn
işleme
58f0572405

+ 12 - 12
DevAdapter/simulator/gpio.1.1/gpio_impl.h

@@ -47,34 +47,34 @@ public:
 #ifndef _MSC_VER
 
     /// <summary>
-    /// 打开指定模块的提示灯
+    /// 鎵撳紑鎸囧畾妯″潡鐨勬彁绀虹伅
     /// </summary>
     /// <param name="dwReq">
-    /// 硬件灯模块序号,见上方定义GPIO_DEV_SN_*,或参考规格说明文档,只会传送模式为”驱动“的序号之一
-    /// 只会设置灯,如果是其他值则返回 Error_NotSupport
+    /// 纭�欢鐏�ā鍧楀簭鍙凤紝瑙佷笂鏂瑰畾涔塆PIO_DEV_SN_*锛屾垨鍙傝€冭�鏍艰�鏄庢枃妗o紝鍙�細浼犻€佹ā寮忎负鈥濋┍鍔ㄢ€滅殑搴忓彿涔嬩竴
+    /// 鍙�細璁剧疆鐏�紝濡傛灉鏄�叾浠栧€煎垯杩斿洖 Error_NotSupport
     /// </param>
     /// <param name="dwMode">
-    /// 入参,指定灯的属性如常亮还是闪烁,是普通灯颜色还是故障灯颜色
-    /// 不同属性可以通过与的方式合并传入,如灯颜色和亮灯模式,同一属性只会传入其中一个值,比如灯常亮和闪烁只会传入其中之一
-    /// 具体值表示的内容参考上方定义的内容 GPIO_DEV_LIGHT_MODE_*
+    /// 鍏ュ弬锛屾寚瀹氱伅鐨勫睘鎬у�甯镐寒杩樻槸闂�儊锛屾槸鏅�€氱伅棰滆壊杩樻槸鏁呴殰鐏��鑹�
+    /// 涓嶅悓灞炴€у彲浠ラ€氳繃涓庣殑鏂瑰紡鍚堝苟浼犲叆锛屽�鐏��鑹插拰浜�伅妯″紡锛屽悓涓€灞炴€у彧浼氫紶鍏ュ叾涓�竴涓�€硷紝姣斿�鐏�父浜�拰闂�儊鍙�細浼犲叆鍏朵腑涔嬩竴
+    /// 鍏蜂綋鍊艰〃绀虹殑鍐呭�鍙傝€冧笂鏂瑰畾涔夌殑鍐呭� GPIO_DEV_LIGHT_MODE_*
     /// </param>
     /// <returns>
-    ///  参数有误或设置失败返回对应的报错
+    ///  鍙傛暟鏈夎�鎴栬�缃�け璐ヨ繑鍥炲�搴旂殑鎶ラ敊
     /// </returns>
     virtual ErrorCodeEnum SetStatus(DWORD dwReq, DWORD dwMode);
 
     /// <summary>
-    /// 获取探测器的状态
+    /// 鑾峰彇鎺㈡祴鍣ㄧ殑鐘舵€�
     /// </summary>
     /// <param name="dwReq">
-    /// 感应模块序号,见上方定义GPIO_DEV_SN_*,或参考规格说明文档,只会传送模式为”接收“的序号
-    /// 这个可能是与的关系,即有可能会一个调用同时获取多个模块的状态
+    /// 鎰熷簲妯″潡搴忓彿锛岃�涓婃柟瀹氫箟GPIO_DEV_SN_*锛屾垨鍙傝€冭�鏍艰�鏄庢枃妗o紝鍙�細浼犻€佹ā寮忎负鈥濇帴鏀垛€滅殑搴忓彿
+    /// 杩欎釜鍙�兘鏄�笌鐨勫叧绯伙紝鍗虫湁鍙�兘浼氫竴涓�皟鐢ㄥ悓鏃惰幏鍙栧�涓�ā鍧楃殑鐘舵€�
     /// </param>
     /// <param name="dwMode">
-    /// 对应模块(有震动、开门、摘机、有人靠近)对应的位,如果是高电平置为1,如果低电平则置为0
+    /// 瀵瑰簲妯″潡锛堟湁闇囧姩銆佸紑闂ㄣ€佹憳鏈恒€佹湁浜洪潬杩戯級瀵瑰簲鐨勪綅锛屽�鏋滄槸楂樼數骞崇疆涓�1锛屽�鏋滀綆鐢靛钩鍒欑疆涓�0
     /// </param>
     /// <returns>
-    /// 无法获取状态则返回报错
+    /// 鏃犳硶鑾峰彇鐘舵€佸垯杩斿洖鎶ラ敊
     /// </returns>
     virtual ErrorCodeEnum DetectStatus(DWORD dwReq, DWORD& dwMode);
 

+ 20 - 20
DevAdapter/simulator/idcer.1.1/idcer_httpans.h

@@ -15,37 +15,37 @@ typedef struct IDCerDevAns
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }sex;
-    struct Nation {//民族(二代证专用)
+    struct Nation {//姘戞棌锛堜簩浠h瘉涓撶敤锛�
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }nation;
-    struct Birthday {//出生日期,原始格式:19861007
+    struct Birthday {//鍑虹敓鏃ユ湡锛屽師濮嬫牸寮�:19861007
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }birthday;
-    struct Address {//住址(二代证专用)
+    struct Address {//浣忓潃锛堜簩浠h瘉涓撶敤锛�
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }address;
-    struct Idno {//证件号码,二代证指身份证号,外国人指永久居留证号
-        std::string data; //拓展至64字节
+    struct Idno {//璇佷欢鍙风爜锛屼簩浠h瘉鎸囪韩浠借瘉鍙凤紝澶栧浗浜烘寚姘镐箙灞呯暀璇佸彿
+        std::string data; //鎷撳睍鑷�64瀛楄妭
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }idno;
-    struct Department {//二代证指签发机关,外国人指当次申请受理机关代码
+    struct Department {//浜屼唬璇佹寚绛惧彂鏈哄叧锛屽�鍥戒汉鎸囧綋娆$敵璇峰彈鐞嗘満鍏充唬鐮�
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }department;
-    struct StartDate {//有效期起始日(签发日)原始格式:20200809
+    struct StartDate {//鏈夋晥鏈熻捣濮嬫棩锛堢�鍙戞棩锛夊師濮嬫牸寮忥細20200809
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }startDate;
-    struct EndDate {//有效期截止日(终止日)原始格式:20200809
+    struct EndDate {//鏈夋晥鏈熸埅姝㈡棩锛堢粓姝㈡棩锛夊師濮嬫牸寮忥細20200809
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
@@ -55,62 +55,62 @@ typedef struct IDCerDevAns
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }photoPath;
-    struct NewAddress {//最新地址,二代证专用
+    struct NewAddress {//鏈€鏂板湴鍧€锛屼簩浠h瘉涓撶敤
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }newAddress;
-    struct EnglishName {//英文姓名,外国人专用
+    struct EnglishName {//鑻辨枃濮撳悕锛屽�鍥戒汉涓撶敤
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }englishName;
-    struct Nationality {//国籍或地区代码,外国人专用
+    struct Nationality {//鍥界睄鎴栧湴鍖轰唬鐮侊紝澶栧浗浜轰笓鐢�
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }nationality;
-    struct IdVersion {//证件版本号,外国人专用
+    struct IdVersion {//璇佷欢鐗堟湰鍙凤紝澶栧浗浜轰笓鐢�
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }idVersion;
-    struct IdType {//证件类型标识,外国人取值'I',二代证为空
+    struct IdType {//璇佷欢绫诲瀷鏍囪瘑锛屽�鍥戒汉鍙栧€�'I'锛屼簩浠h瘉涓虹┖
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }idType;
-    struct Reserved {//保留字段,外国人专用
+    struct Reserved {//淇濈暀瀛楁�锛屽�鍥戒汉涓撶敤
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }reserved;
-    struct TXZCode {//通行证号码(港澳台居住证)
+    struct TXZCode {//閫氳�璇佸彿鐮侊紙娓�境鍙板眳浣忚瘉锛�
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }txzCode;
-    struct IssuedSN {//签发次数(港澳台居住证)
+    struct IssuedSN {//绛惧彂娆℃暟锛堟腐婢冲彴灞呬綇璇侊級
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }issuedSN;
-    struct Reserved2 {//备用2(港澳台居住证)
+    struct Reserved2 {//澶囩敤2锛堟腐婢冲彴灞呬綇璇侊級
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }reserved2;
-    struct Reserved3 {//备用3(港澳台居住证)
+    struct Reserved3 {//澶囩敤3锛堟腐婢冲彴灞呬綇璇侊級
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }reserved3;
-    struct Reserved4 {//备用4(港澳台居住证)
+    struct Reserved4 {//澶囩敤4锛堟腐婢冲彴灞呬綇璇侊級
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)
     }reserved4;
-    struct Reserved5 {//备用5(港澳台居住证)
+    struct Reserved5 {//澶囩敤5锛堟腐婢冲彴灞呬綇璇侊級
         std::string data;
         int dwSize;
         JSONCONVERT2OBJECT_MEMEBER_REGISTER(data, dwSize)

+ 1 - 1
DevAdapter/simulator/idcer.1.1/idcer_impl.h

@@ -31,7 +31,7 @@ public:
     ErrorCodeEnum ScanIDAndSaveImage();
     ErrorCodeEnum QueryCardPos(int &pos);
 
-    ///////身份证数据格式转换函数////////
+    ///////韬�唤璇佹暟鎹�牸寮忚浆鎹㈠嚱鏁�////////
     ErrorCodeEnum ex2HttpFunction(IDCerInfoEx2& idCerInfoEx2);
 };
 

+ 1 - 1
Framework/Common/SpBase.h

@@ -1692,7 +1692,7 @@ SPBASE_API void LogAssert(const char* pszMessage, const char* pszSourceFile, con
 SPBASE_API void LogTrace(const char* pszMessage, const char* pszSourceFile, const int nLine, const linkContext& t_context);
 
 
-SPBASE_API CSimpleStringA GetSysErrMsg(int nErrCode);
+SPBASE_API CSimpleStringA GetSysErrMsg(DWORD nErrCode);
 SPBASE_API const char *_GetFileName(const char *pszFilePath);
 
 /*

+ 0 - 15
Framework/libtoolkit/memutil.c

@@ -108,21 +108,6 @@ TOOLKIT_API void debug_trace(const char *fmt, ...)
 	va_end(arg);
 }
 
-TOOLKIT_API int GetSystemErrorDesc(int error_code, char *buf, int n)
-{
-	//TODO: implement or compatible
-	DWORD dwRet = FormatMessageA(
-		FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM,
-		NULL,
-		error_code,
-		MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
-		buf,
-		n,
-		NULL);
-	buf[dwRet] = 0;
-	return (int)dwRet;
-}
-
 //////////////////////////////////////////////////////////////////////////
 
 struct toolkit_allocator_t

+ 0 - 4
Framework/libtoolkit/memutil.h

@@ -319,10 +319,6 @@ static __inline int timeval_sub(struct timeval *x, struct timeval *y)
 	return (x->tv_sec - y->tv_sec) * 1000 + (1000000 + x->tv_usec - y->tv_usec)/1000 - 1000;
 }
 
-
-TOOLKIT_API int GetSystemErrorDesc(int error_code, char *buf, int n);
-
-
 #ifdef __cplusplus
 } // extern "C" {
 #endif

+ 1 - 1
Framework/libtoolkit/win/error.c

@@ -112,7 +112,7 @@ int toolkit_translate_sys_error(int sys_errno) {
 
 
 /*
- * Display an error message and abort the event loop.
+ * Display an error message and abort the routine.
  */
 void toolkit_fatal_error(const int errorno, const char* syscall) 
 {

+ 12 - 4
Framework/spbase/SpBase.cpp

@@ -725,8 +725,9 @@ extern "C" SPBASE_API const char* SpStrError(ErrorCodeEnum errorCode)
 	return sp_strerror((int)errorCode);
 }
 
-SPBASE_API CSimpleStringA GetSysErrMsg(int nErrCode)
+SPBASE_API CSimpleStringA GetSysErrMsg(DWORD nErrCode)
 {
+#if defined(RVC_OS_WIN)
 	char szBuf[2048] = {};
 	DWORD dwRet = FormatMessageA(
 		FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM,
@@ -734,18 +735,25 @@ SPBASE_API CSimpleStringA GetSysErrMsg(int nErrCode)
 		nErrCode,
 		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
 		szBuf,
-		sizeof(szBuf)-1,
+		sizeof(szBuf) - 1,
 		NULL);
 
-	char *p = strrchr(szBuf, '\r');
+	char* p = strrchr(szBuf, '\r');
 	if (p != NULL)
 		*p = ' ';
-	
+
 	p = strrchr(szBuf, '\n');
 	if (p != NULL)
 		*p = ' ';
 
 	return dwRet > 0 ? szBuf : CSimpleStringA::Format("get error message fail: %d", GetLastError());
+
+#else
+	
+	std::string szBuf(strerror(nErrCode));
+	return szBuf.c_str();
+
+#endif //RVC_OS_WIN
 }
 
 SPBASE_API const char *_GetFileName(const char *pszFilePath)

+ 2 - 6
Framework/spbase/sp_btr.c

@@ -207,9 +207,7 @@ WriteLog:
 	WriteFile(hFile, line, strlen(line), &dwBytesWritten, NULL);
 	if (dwBytesWritten == 0)
 	{
-		char szTmp[512] = { 0 };
-		GetSystemErrorDesc(GetLastError(), szTmp, sizeof(szTmp));
-		DbgWithLinkForC(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM,"write boot start fail: %s", szTmp);
+		DbgWithLinkForC(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM,"write boot start fail: %d", GetLastError());
 	}
 
 	FlushFileBuffers(hFile);
@@ -268,9 +266,7 @@ int sp_btr_write_on_shutdown(const char *bootrec_path, sp_btr_context_t *ctx, in
 	WriteFile(hFile, line, strlen(line), &dwBytesWritten, NULL);
 	if (dwBytesWritten == 0)
 	{
-		char szTmp[512] = { 0 };
-		GetSystemErrorDesc(GetLastError(), szTmp, sizeof(szTmp));
-		DbgWithLinkForC(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM,"write reboot rec fail: %s", szTmp);
+		DbgWithLinkForC(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM,"write reboot rec fail: %d", GetLastError());
 	}
 
 	FlushFileBuffers(hFile);

+ 99 - 57
Framework/winpr/include/winpr/error.h

@@ -35,59 +35,60 @@
 #define NO_ERROR 0
 #endif
 
-#define E_UNEXPECTED (HRESULT)0x8000FFFFL
-#define E_NOTIMPL (HRESULT)0x80004001L
-#define E_OUTOFMEMORY (HRESULT)0x8007000EL
-#define E_INVALIDARG (HRESULT)0x80070057L
-#define E_NOINTERFACE (HRESULT)0x80004002L
-#define E_POINTER (HRESULT)0x80004003L
-#define E_HANDLE (HRESULT)0x80070006L
-#define E_ABORT (HRESULT)0x80004004L
-#define E_FAIL (HRESULT)0x80004005L
-#define E_ACCESSDENIED (HRESULT)0x80070005L
-
-#define CO_E_INIT_TLS 0x80004006
-#define CO_E_INIT_SHARED_ALLOCATOR 0x80004007
-#define CO_E_INIT_MEMORY_ALLOCATOR 0x80004008
-#define CO_E_INIT_CLASS_CACHE 0x80004009
-#define CO_E_INIT_RPC_CHANNEL 0x8000400A
-#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL 0x8000400B
-#define CO_E_INIT_TLS_CHANNEL_CONTROL 0x8000400C
-#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR 0x8000400D
-#define CO_E_INIT_SCM_MUTEX_EXISTS 0x8000400E
-#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS 0x8000400F
-#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE 0x80004010
-#define CO_E_INIT_SCM_EXEC_FAILURE 0x80004011
-#define CO_E_INIT_ONLY_SINGLE_THREADED 0x80004012
-#define CO_E_CANT_REMOTE 0x80004013
-#define CO_E_BAD_SERVER_NAME 0x80004014
-#define CO_E_WRONG_SERVER_IDENTITY 0x80004015
-#define CO_E_OLE1DDE_DISABLED 0x80004016
-#define CO_E_RUNAS_SYNTAX 0x80004017
-#define CO_E_CREATEPROCESS_FAILURE 0x80004018
-#define CO_E_RUNAS_CREATEPROCESS_FAILURE 0x80004019
-#define CO_E_RUNAS_LOGON_FAILURE 0x8000401A
-#define CO_E_LAUNCH_PERMSSION_DENIED 0x8000401B
-#define CO_E_START_SERVICE_FAILURE 0x8000401C
-#define CO_E_REMOTE_COMMUNICATION_FAILURE 0x8000401D
-#define CO_E_SERVER_START_TIMEOUT 0x8000401E
-#define CO_E_CLSREG_INCONSISTENT 0x8000401F
-#define CO_E_IIDREG_INCONSISTENT 0x80004020
-#define CO_E_NOT_SUPPORTED 0x80004021
-#define CO_E_RELOAD_DLL 0x80004022
-#define CO_E_MSI_ERROR 0x80004023
-#define CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT 0x80004024
-#define CO_E_SERVER_PAUSED 0x80004025
-#define CO_E_SERVER_NOT_PAUSED 0x80004026
-#define CO_E_CLASS_DISABLED 0x80004027
-#define CO_E_CLRNOTAVAILABLE 0x80004028
-#define CO_E_ASYNC_WORK_REJECTED 0x80004029
-#define CO_E_SERVER_INIT_TIMEOUT 0x8000402A
-#define CO_E_NO_SECCTX_IN_ACTIVATE 0x8000402B
-#define CO_E_TRACKER_CONFIG 0x80004030
-#define CO_E_THREADPOOL_CONFIG 0x80004031
-#define CO_E_SXS_CONFIG 0x80004032
-#define CO_E_MALFORMED_SPN 0x80004033
+#define E_UNEXPECTED -2147418113l   // 0x8000FFFFL
+#define E_ACCESSDENIED -2147024891l // 0x80070005L
+#define E_HANDLE -2147024890l       // 0x80070006L
+#define E_OUTOFMEMORY -2147024882l  // 0x8007000EL
+
+#define E_INVALIDARG -2147024809l  // 0x80070057L
+#define E_NOTIMPL -2147467263l     // 0x80004001L
+#define E_NOINTERFACE -2147467262l // 0x80004002L
+#define E_POINTER -2147467261l     // 0x80004003L
+#define E_ABORT -2147467260l       // 0x80004004L
+#define E_FAIL -2147467259l        // 0x80004005L
+
+#define CO_E_INIT_TLS -2147467258l                                 // 0x80004006l
+#define CO_E_INIT_SHARED_ALLOCATOR -2147467257l                    // 0x80004007l
+#define CO_E_INIT_MEMORY_ALLOCATOR -2147467256l                    // 0x80004008l
+#define CO_E_INIT_CLASS_CACHE -2147467255l                         // 0x80004009l
+#define CO_E_INIT_RPC_CHANNEL -2147467254l                         // 0x8000400Al
+#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL -2147467253l             // 0x8000400Bl
+#define CO_E_INIT_TLS_CHANNEL_CONTROL -2147467252l                 // 0x8000400Cl
+#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR -2147467251l           // 0x8000400Dl
+#define CO_E_INIT_SCM_MUTEX_EXISTS -2147467250l                    // 0x8000400El
+#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS -2147467249l             // 0x8000400Fl
+#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE -2147467248l                // 0x80004010l
+#define CO_E_INIT_SCM_EXEC_FAILURE -2147467247l                    // 0x80004011l
+#define CO_E_INIT_ONLY_SINGLE_THREADED -2147467246l                // 0x80004012l
+#define CO_E_CANT_REMOTE -2147467245l                              // 0x80004013l
+#define CO_E_BAD_SERVER_NAME -2147467244l                          // 0x80004014l
+#define CO_E_WRONG_SERVER_IDENTITY -2147467243l                    // 0x80004015l
+#define CO_E_OLE1DDE_DISABLED -2147467242l                         // 0x80004016l
+#define CO_E_RUNAS_SYNTAX -2147467241l                             // 0x80004017l
+#define CO_E_CREATEPROCESS_FAILURE -2147467240l                    // 0x80004018l
+#define CO_E_RUNAS_CREATEPROCESS_FAILURE -2147467239l              // 0x80004019l
+#define CO_E_RUNAS_LOGON_FAILURE -2147467238l                      // 0x8000401Al
+#define CO_E_LAUNCH_PERMSSION_DENIED -2147467237l                  // 0x8000401Bl
+#define CO_E_START_SERVICE_FAILURE -2147467236l                    // 0x8000401Cl
+#define CO_E_REMOTE_COMMUNICATION_FAILURE -2147467235l             // 0x8000401Dl
+#define CO_E_SERVER_START_TIMEOUT -2147467234l                     // 0x8000401El
+#define CO_E_CLSREG_INCONSISTENT -2147467233l                      // 0x8000401Fl
+#define CO_E_IIDREG_INCONSISTENT -2147467232l                      // 0x80004020l
+#define CO_E_NOT_SUPPORTED -2147467231l                            // 0x80004021l
+#define CO_E_RELOAD_DLL -2147467230l                               // 0x80004022l
+#define CO_E_MSI_ERROR -2147467229l                                // 0x80004023l
+#define CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT -2147467228l // 0x80004024l
+#define CO_E_SERVER_PAUSED -2147467227l                            // 0x80004025l
+#define CO_E_SERVER_NOT_PAUSED -2147467226l                        // 0x80004026l
+#define CO_E_CLASS_DISABLED -2147467225l                           // 0x80004027l
+#define CO_E_CLRNOTAVAILABLE -2147467224l                          // 0x80004028l
+#define CO_E_ASYNC_WORK_REJECTED -2147467223l                      // 0x80004029l
+#define CO_E_SERVER_INIT_TIMEOUT -2147467222l                      // 0x8000402Al
+#define CO_E_NO_SECCTX_IN_ACTIVATE -2147467221l                    // 0x8000402Bl
+#define CO_E_TRACKER_CONFIG -2147467216l                           // 0x80004030l
+#define CO_E_THREADPOOL_CONFIG -2147467215l                        // 0x80004031l
+#define CO_E_SXS_CONFIG -2147467214l                               // 0x80004032l
+#define CO_E_MALFORMED_SPN -2147467213l                            // 0x80004033l
 
 #define FACILITY_WINDOWSUPDATE 36
 #define FACILITY_WINDOWS_CE 24
@@ -2974,12 +2975,53 @@
 #define WS_E_SECURITY_SYSTEM_FAILURE 0x803D0023
 #endif
 
+#define NTE_BAD_UID WINPR_CXX_COMPAT_CAST(LONG, 0x80090001)
+#define NTE_BAD_HASH WINPR_CXX_COMPAT_CAST(LONG, 0x80090002)
+#define NTE_BAD_KEY WINPR_CXX_COMPAT_CAST(LONG, 0x80090003)
+#define NTE_BAD_LEN WINPR_CXX_COMPAT_CAST(LONG, 0x80090004)
+#define NTE_BAD_DATA WINPR_CXX_COMPAT_CAST(LONG, 0x80090005)
+#define NTE_BAD_SIGNATURE WINPR_CXX_COMPAT_CAST(LONG, 0x80090006)
+#define NTE_BAD_VER WINPR_CXX_COMPAT_CAST(LONG, 0x80090007)
+#define NTE_BAD_ALGID WINPR_CXX_COMPAT_CAST(LONG, 0x80090008)
+#define NTE_BAD_FLAGS WINPR_CXX_COMPAT_CAST(LONG, 0x80090009)
+#define NTE_BAD_TYPE WINPR_CXX_COMPAT_CAST(LONG, 0x8009000A)
+#define NTE_BAD_KEY_STATE WINPR_CXX_COMPAT_CAST(LONG, 0x8009000B)
+#define NTE_BAD_HASH_STATE WINPR_CXX_COMPAT_CAST(LONG, 0x8009000C)
+#define NTE_NO_KEY WINPR_CXX_COMPAT_CAST(LONG, 0x8009000D)
+#define NTE_NO_MEMORY WINPR_CXX_COMPAT_CAST(LONG, 0x8009000E)
+#define NTE_EXISTS WINPR_CXX_COMPAT_CAST(LONG, 0x8009000F)
+#define NTE_PERM WINPR_CXX_COMPAT_CAST(LONG, 0x80090010)
+#define NTE_NOT_FOUND WINPR_CXX_COMPAT_CAST(LONG, 0x80090011)
+#define NTE_DOUBLE_ENCRYPT WINPR_CXX_COMPAT_CAST(LONG, 0x80090012)
+#define NTE_BAD_PROVIDER WINPR_CXX_COMPAT_CAST(LONG, 0x80090013)
+#define NTE_BAD_PROV_TYPE WINPR_CXX_COMPAT_CAST(LONG, 0x80090014)
+#define NTE_BAD_PUBLIC_KEY WINPR_CXX_COMPAT_CAST(LONG, 0x80090015)
+#define NTE_BAD_KEYSET WINPR_CXX_COMPAT_CAST(LONG, 0x80090016)
+#define NTE_PROV_TYPE_NOT_DEF WINPR_CXX_COMPAT_CAST(LONG, 0x80090017)
+#define NTE_PROV_TYPE_ENTRY_BAD WINPR_CXX_COMPAT_CAST(LONG, 0x80090018)
+#define NTE_KEYSET_NOT_DEF WINPR_CXX_COMPAT_CAST(LONG, 0x80090019)
+#define NTE_KEYSET_ENTRY_BAD WINPR_CXX_COMPAT_CAST(LONG, 0x8009001A)
+#define NTE_PROV_TYPE_NO_MATCH WINPR_CXX_COMPAT_CAST(LONG, 0x8009001B)
+#define NTE_SIGNATURE_FILE_BAD WINPR_CXX_COMPAT_CAST(LONG, 0x8009001C)
+#define NTE_PROVIDER_DLL_FAIL WINPR_CXX_COMPAT_CAST(LONG, 0x8009001D)
+#define NTE_PROV_DLL_NOT_FOUND WINPR_CXX_COMPAT_CAST(LONG, 0x8009001E)
+#define NTE_BAD_KEYSET_PARAM WINPR_CXX_COMPAT_CAST(LONG, 0x8009001F)
+#define NTE_FAIL WINPR_CXX_COMPAT_CAST(LONG, 0x80090020)
+#define NTE_SYS_ERR WINPR_CXX_COMPAT_CAST(LONG, 0x80090021)
+#define NTE_SILENT_CONTEXT WINPR_CXX_COMPAT_CAST(LONG, 0x80090022)
+#define NTE_TOKEN_KEYSET_STORAGE_FULL WINPR_CXX_COMPAT_CAST(LONG, 0x80090023)
+#define NTE_TEMPORARY_PROFILE WINPR_CXX_COMPAT_CAST(LONG, 0x80090024)
+#define NTE_FIXEDPARAMETER WINPR_CXX_COMPAT_CAST(LONG, 0x80090025)
+#define NTE_NO_MORE_ITEMS ERROR_NO_MORE_ITEMS
+#define NTE_NOT_SUPPORTED ERROR_NOT_SUPPORTED
+#define NTE_INVALID_PARAMETER WINPR_CXX_COMPAT_CAST(LONG, 0x80090027)
+
 #define EXCEPTION_MAXIMUM_PARAMETERS 15
 
-typedef struct _EXCEPTION_RECORD EXCEPTION_RECORD;
-typedef struct _EXCEPTION_RECORD* PEXCEPTION_RECORD;
+typedef struct s_EXCEPTION_RECORD EXCEPTION_RECORD;
+typedef struct s_EXCEPTION_RECORD* PEXCEPTION_RECORD;
 
-struct _EXCEPTION_RECORD
+struct s_EXCEPTION_RECORD
 {
 	DWORD ExceptionCode;
 	DWORD ExceptionFlags;
@@ -2991,7 +3033,7 @@ struct _EXCEPTION_RECORD
 
 typedef void* PCONTEXT;
 
-typedef struct _EXCEPTION_POINTERS
+typedef struct s_EXCEPTION_POINTERS
 {
 	PEXCEPTION_RECORD ExceptionRecord;
 	PCONTEXT ContextRecord;

+ 0 - 2
Framework/winpr/libwinpr/crt/unicode.c

@@ -416,7 +416,6 @@ int ConvertToUnicode(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cb
 
 		if (!(*lpWideCharStr))
 		{
-			// SetLastError(ERROR_INSUFFICIENT_BUFFER);
 			return 0;
 		}
 	}
@@ -486,7 +485,6 @@ int ConvertFromUnicode(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int
 
 		if (!(*lpMultiByteStr))
 		{
-			// SetLastError(ERROR_INSUFFICIENT_BUFFER);
 			return 0;
 		}
 	}

+ 8 - 1
Framework/winpr/libwinpr/error/error.c

@@ -44,7 +44,14 @@ DWORD GetLastError(VOID)
 	PTEB pt = NtCurrentTeb();
 	if (pt)
 	{
-		return NtCurrentTeb()->LastErrorValue;
+		DWORD tmp = NtCurrentTeb()->LastErrorValue;
+		if (tmp == 0) {
+			tmp = errno;
+		}
+		else {
+			pt->LastErrorValue = 0;
+		}
+		return tmp;
 	}
 	return ERROR_OUTOFMEMORY;
 }

+ 3 - 1
Framework/winpr/libwinpr/nt/nt.c

@@ -101,8 +101,10 @@ PTEB NtCurrentTeb(void)
 		if ((teb = pthread_getspecific(_TebKey)) == NULL)
 		{
 			teb = calloc(1, sizeof(TEB));
-			if (teb)
+			if (teb) {
+				/*calloc作用是为数组分配内存,并确保分配的内存区域被初始化为零*/
 				pthread_setspecific(_TebKey, teb);
+			}
 		}
 	}
 	return teb;

+ 1 - 0
Module/mod_ResourceWatcher/ResourceWatcherFSM.cpp

@@ -1571,6 +1571,7 @@ void ResourceWatcherFSM::DetectAutoStartupCover()
 	}
 }
 
+//TODO: CrossPlaform  [Gifur@2025729]
 static int Is32R64Platform()
 {
     static int isWow64 = -1;

+ 1 - 0
Module/mod_ResourceWatcher/mod_ResourceWatcher.cpp

@@ -231,6 +231,7 @@ static inline bool Is64BitPlatform()
         || si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64);
 }
 
+//TODO: CrossPlaform  [Gifur@2025729]
 static int Is32R64Platform()
 {
     static int isWow64 = -1;

+ 3 - 0
Module/mod_UpgradeMgr/UpgradeTaskFSM.cpp

@@ -2165,6 +2165,7 @@ int CUpgradeTaskFSM::ExecRunCmd(CSimpleStringA &strErrMsg,CInstallStep* ins)
 	if (ExistsFileA(destPath.GetData()))
 	{
 #ifdef RVC_OS_WIN
+		//TODO: CrossPlaform  [Gifur@2025729]
 		// window模式下 如果是Wow64模式,需屏蔽System32重定向
 		PVOID pRedirectOldValue(NULL);
 		bool bIsWow64 = IsWow64Process();
@@ -3262,6 +3263,7 @@ CSimpleStringA CUpgradeTaskFSM::GetFileDirectory(const char *pszFullPath)
 	return CSimpleStringA(pszFullPath, i);
 }
 
+//TODO: CrossPlaform  [Gifur@2025729]
 bool CUpgradeTaskFSM::IsWow64Process()
 {
 #ifdef RVC_OS_WIN
@@ -5036,6 +5038,7 @@ int CUpgradeTaskFSM::ExecDepRunCmd(CSimpleStringA& strErrMsg, CInstallStep* ins)
 	if (ExistsFileA(destPath.GetData()))
 	{
 #ifdef RVC_OS_WIN
+		//TODO: CrossPlaform  [Gifur@2025729]
 		// window模式下 如果是Wow64模式,需屏蔽System32重定向
 		PVOID pRedirectOldValue(NULL);
 		bool bIsWow64 = IsWow64Process();

+ 1 - 0
Module/mod_UpgradeMgr/UpgradeTaskFSM.h

@@ -376,6 +376,7 @@ public:
 	bool IsFileMatch(const char *pszFilter, const char *pszFileName);
 	bool RecursiveCopyDir(const char *pszSourceDir, const char *pszDestDir,CSimpleStringA &strErrInfo);//可以合并
 	CSimpleStringA GetFileDirectory(const char *pszFullPath);//查找文件的父路径
+	//TODO: CrossPlaform  [Gifur@2025729]
 	bool IsWow64Process();//判断是否是64位windows程序
 	int system_on(string cmdFilePath, bool isWait,CSimpleStringA &errMsg);//cmd窗口程序
 	int waitSystem(string cmd, const char * par, bool nShow,CSimpleStringA &errMsg);//起进程执行cmd

+ 1 - 1
Module/mod_UpgradeMgr/mod_UpgradeMgr.cpp

@@ -491,7 +491,7 @@ ErrorCodeEnum CUpgradeMgrEntity::testActive()
 	}
 
 	CSimpleStringA strActiveFile = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "active.txt", rootVerPath.GetData());
-
+	//TODO: CrossPlaform  [Gifur@2025729]
 	FILE* fp = fopen(strActiveFile.GetData(),"rb+");
 	if(fp==NULL){
 #ifdef RVC_OS_WIN

+ 1 - 1
Module/mod_guiconsole/mod_guiconsole.cpp

@@ -443,7 +443,7 @@ std::pair<DWORD, std::string> CGUIConsoleEntity::VTMSystemControl(SpReqAnsContex
 	msg.entityName = GetEntityName();
 	msg.LogType = 1;
 	
-
+	//TODO: CrossPlaform 采用框架指令去关机,形成完整链路  [Gifur@2025729]
 	DWORD rc = Error_Succeed;
 	if (!ctx->Req.rebootFunction.Compare("RestartApp", true))
 	{

+ 2 - 0
Module/mod_localmediaplay/AdvertManage/MediaManage.cpp

@@ -248,6 +248,8 @@ void mediaManage::InitResourceListByLocal()
 	uint32_t unetworkList = 0;
 	bool blog = false;
 
+
+	//TODO: CrossPlaform  [Gifur@2025729]
 #ifdef RVC_OS_WIN
 	for each (auto i in headList) {
 		m_localList.push_back(i);