#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; /** * @brief IPv4 网络信息 */ typedef struct { TCHAR *ip; ///< IP 地址 TCHAR *network; ///< 网络地址 TCHAR *broadcast; ///< 网络广播地址 TCHAR *netmask; ///< 网络子网掩码 TCHAR hosts[64]; ///< number of hosts in text unsigned int prefix; ///< 网络前缀 TCHAR *hostmin; ///< 最小网络主机 IP TCHAR *hostmax; ///< 最大网络主机 IP } IP_INFO, *PIP_INFO; #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); /** * @brief TCHAR 字符串 字符串转 Unicode 字符串 * @param[in] pTStr 需要转换的 TCHAR 字符串 * @param[out] pOutStr 转换后的 WCHAR 字符串 * @param[in] maxOutLen pOutStr 最大字节数 * @return 函数执行结果 0: 成功, 小于0 失败 @see USER_ERRNO * - -ERR_INPUT_PARAMS 输入参数错误 * - ERR_SUCCESS 成功 */ int TCharToWideChar(const TCHAR *pTStr, WCHAR *pOutStr, int maxOutLen); int FindFile(const TCHAR *pPath, PFILE_LIST pFileList, const bool exitWhenMatchOne); /** * @brief 计算 IPv4 网络信息 * @param[in] pIpStr IPv4 地址 * @param[in] pNetmask IPv4子网掩码 * @param[out] pInfo 计算结果 * @return 成功, 小于0 失败 @see USER_ERRNO * - -ERR_INPUT_PARAMS 输入参数错误 * - -ERR_UN_SUPPORT 不支持的格式转换 * - -ERR_MALLOC_MEMORY 分配内存失败 * - ERR_SUCCESS 成功 */ int GetIpV4InfoFromNetmask(const TCHAR *pIpStr, const TCHAR *pNetmask, PIP_INFO pInfo); /** * @brief 计算 IPv4 网络信息 * @param[in] pIpStr IPv4 网络信息 '/' 分割,支持CIDR以及子网掩码 example: 192.168.1.32/24, 192.168.1.32/255.255.255.0 * @param[out] pInfo 计算结果 * @return 0: 成功, 小于0 失败 @see USER_ERRNO * - -ERR_INPUT_PARAMS 输入参数错误 * - -ERR_UN_SUPPORT 不支持的格式转换 * - -ERR_MALLOC_MEMORY 分配内存失败 * - ERR_SUCCESS 成功 */ int GetIpV4InfoFromCIDR(const TCHAR *pIpStr, PIP_INFO pInfo); #ifdef __cplusplus } #endif