#pragma once


#define DLL_EXPORT  __declspec(dllexport)




/// <summary>
/// ローカルおよびリモートIP・Port, PID,プロセス名(wchar_t)からなる構造体
/// </summary>
struct statTCPROW {

	/// <summary>
	/// ローカルIPアドレス(e.g. "192.168.11.1")
	/// </summary>
	char* LocalAddr;

	/// <summary>
	/// リモートIPアドレス(e.g. "192.168.11.1")
	/// </summary>
	char* RemoteAddr;

	/// <summary>
	/// プロセス名
	/// </summary>
	wchar_t* ProcessName;


	/// <summary>
	/// 接続状態(文字列. 内容は WinAPI TCP準拠)
	/// </summary>
	const char* Statestr;


	/// <summary>
	/// ローカルIPポート
	/// </summary>
	unsigned long LocalPort;

	/// <summary>
	/// リモートIPポート
	/// </summary>
	unsigned long RemotePort;

	/// <summary>
	/// PID
	/// </summary>
	unsigned long PID;


	/// <summary>
	/// 接続状態(数値. 内容は WinAPI TCP準拠)
	/// </summary>
	unsigned long Statenum;



	/// <summary>
	/// 取得した接続セッション数
	/// </summary>
	unsigned long size;



};



/// <summary>
/// ローカルIP・Port, PID,プロセス名(wchar_t)からなる構造体
/// </summary>
struct statUDPROW {

	/// <summary>
	/// ローカルIPアドレス(e.g. "192.168.11.1")
	/// </summary>
	char* LocalAddr;


	/// <summary>
	/// プロセス名
	/// </summary>
	wchar_t* ProcessName;


	/// <summary>
	/// ローカルIPポート
	/// </summary>
	unsigned long LocalPort;

	/// <summary>
	/// PID
	/// </summary>
	unsigned long PID;

	/// <summary>
	/// 取得した接続セッション数
	/// </summary>
	unsigned long size;

};


/// <summary>
/// netstat クラス
/// </summary>
	class DLL_EXPORT netstat
	{
	public:
		netstat(){  };
		
		// <summary>
		/// getstatを実行した場合, 最終的にはこれでメモリを解放してください。
		/// </summary>
		void getstat_free(statTCPROW* p);

		/// <summary>
		///  指定プロセス名からプロセスIDをえる。
		/// </summary>
		unsigned long getProcessId(wchar_t* ar);

		/// <summary>
		///  起動中の指定TCPプロセスのうち, そのプロセス名から, TCP Port をえる
		/// </summary>
		unsigned long  getnetPort_gx2(wchar_t* ar);


		/// <summary>
		/// 起動中のUDPプロセス群の情報をえる。これを実行した場合, 最終的には getstat_free でメモリを解放してください。
		/// </summary>
		statUDPROW* getstat_udp();

		/// <summary>
		/// 起動中のTCPプロセス群の情報をえる 。これを実行した場合, 最終的には getstat_free でメモリを解放してください。
		/// </summary>
		statTCPROW* getstat_tcp();

	};



