
#pragma once
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <time.h> //或者 #include <ctime>
#include <io.h>
#pragma comment(lib, "version.lib")
#include "tinyxml2.h"
#include <vector>
#include <string>

namespace Global
{
	// 网卡类型;
	enum NICKIND
	{
		// pci网卡;
		NIC_PCI,
		// usb网卡;
		NIC_USB,
		// 虚拟网卡;
		NIC_ROOT,
		// 仿真网卡;
		NIC_SWD,
		// 未知类型;
		NIC_UNK
	};

	typedef struct __MAC_ADDRESS__
	{
		INT nNICKind;
		TCHAR szNICKind[16];
		TCHAR szMacAddress[MAX_PATH];
		TCHAR szDevicePath[MAX_PATH];
	} MacAddress, * pMacAddress;
	//////////////////////////////////////////////////////////////////////////
	// 全局变量;
	extern BOOL g_bTestHost;
	extern TCHAR g_szCurModuleDir[MAX_PATH];
	extern TCHAR g_szCurModulePath[MAX_PATH];
	extern TCHAR g_szFna[MAX_PATH];
	extern TCHAR g_szConfig[MAX_PATH];
	extern std::string g_strMacs;
	extern std::vector<MacAddress> g_vtMac;

	//////////////////////////////////////////////////////////////////////////
	// 全局函数;
	bool GetVersion(IN const TCHAR* fname, OUT WORD* pdwFileVersion, OUT WORD* pdwProductVerion);
	BOOL GetVersion(IN HMODULE hModule, OUT DWORD(&dwFVArray)[4], OUT DWORD(&dwPVArray)[4]);
	void WriteTextLog(const TCHAR* format, ...);

	std::string EnCode_UTF8URL(IN const CHAR* pText);
	std::string& trim(std::string& str);
	// 获取网卡地址;
	INT GetMacAddress();
	// 字符串是否由数字、字母、符号组成;
	BOOL IsValidString(LPCTSTR lpszString);

	// 获取系统当前串口数量;
	BOOL GetSysSerialPort(std::vector<std::string>& vtports);
}; // namespace Global
