NetTunnelWindows/NetTunnelSDK/misc.h

59 lines
1.9 KiB
C

#pragma once
#include <windows.h>
#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