#pragma once #include #define CFG_WIREGUARD_SECTION TEXT("WireGuard") #define CFG_WIREGUARD_PATH TEXT("WireGuardExe") #define CFG_WGCFG_PATH TEXT("WgCfgPath") #define CFG_WG_PATH TEXT("WgExe") typedef struct { TCHAR path[MAX_PATH]; } FILE_PATH, *PFILE_PATH; typedef struct { PFILE_PATH pFilePath; unsigned int nItems; } FILE_LIST, *PFILE_LIST; #ifdef __cplusplus // If used by C++ code, extern "C" { // we need to export the C interface #endif void RemoveTailLineBreak(TCHAR *pInputStr, int strSize); int RunCommand(TCHAR *pszCmd, TCHAR *pszResultBuffer, int dwResultBufferSize, unsigned long *pRetCode); /** * @brief IPv4 子网掩码转 CIDR 掩码 * @param[in] pNetMask IPv4 子网掩码字符串 * @return IPv4 CIDR 掩码 */ int __cdecl NetmaskToCIDR(const TCHAR *pNetMask); /** * @brief CIDR 掩码转 IPv4 子网掩码 * @param[in] cidr CIDR 掩码 * @return CIDR 对应的子网掩码 */ const TCHAR *CIDRToNetmask(const UINT8 cidr); void ShowWindowsErrorMessage(const TCHAR *pMsgHead); void StringReplaceAll(TCHAR *pOrigin, const TCHAR *pOldStr, const TCHAR *pNewStr); void StringRemoveAll(TCHAR *pOrigin, const TCHAR *pString); TCHAR *binToHexString(TCHAR *p, const unsigned char *cp, unsigned int count); int GetWindowsServiceStatus(const TCHAR *pSvrName, PDWORD pStatus); /** * @brief Unicode 宽字符串转 TCHAR 字符串 * @param[in] pWStr 需要转换的宽字符串 * @param[out] pOutStr 转换后的 TCHAR 字符串 * @param[in] maxOutLen pOutStr 最大字节数 * @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO * - -ERR_INPUT_PARAMS 输入参数错误 * - ERR_SUCCESS 成功 */ int WideCharToTChar(const WCHAR *pWStr, TCHAR *pOutStr, int maxOutLen); int FindFile(const TCHAR *pPath, PFILE_LIST pFileList, const bool exitWhenMatchOne); #ifdef __cplusplus } #endif