/********************************************************************************
*	ファイル名：System.h														*
*	用　　　途：処理系依存型情報の取り扱い										*
*	備　　　考：																*
*	履　　　歴：																*
********************************************************************************/
/****************************
*	 コンパイル環境設定		*
****************************/
#pragma once
/****************************
*	インクルードファイル	*
****************************/
#include <afxdisp.h>
/****************************
*		 マクロ定数			*
****************************/
/***** ShowAndEnableCtrlsの引数 nMode に設定する値 *****/
#define SEC_SHOW			0					// 表示/非表示
#define SEC_ENABLE			1					// 有効/無効

/***** GetMyPathの引数 nFlagに設定する値 *****/
#define GET_EXEPATH			0					// 実行ファイルのフォルダ取得（デフォルト）
#define GET_CURRENTPATH		1					// カレントのフォルダ取得

/****************************
*		 構造体定義			*
****************************/
/***** 物理メモリロック情報 *****/
typedef struct
{
	SIZE_T			uDemandSize;				// 要求サイズ（バイト数）
	ULONG_PTR		uRealPages;					// 取得したページ数
	SIZE_T			uPFNArraySize;				// ページフレーム番号配列要素数
	ULONG_PTR	   *upPFN;						// ページフレーム番号情報
	PVOID			vpReserved;					// アドレスウインドウ拡張(AWE)
} PHYSMEMLOCK;

/***** ディスク情報 *****/
typedef struct
{
	UINT64			uTotalSize;					// ディスク全体のサイズ
	UINT64			uFreeSize;					// 空きサイズ
	UINT64			uAvailable;					// 利用可能サイズ
} DISK_INFO;
/****************************
*		 クラス定義			*
****************************/
BOOL	SetWorkingSet(SIZE_T uMinSize, SIZE_T uMaxSize);
		/********************************************************************
		*	EWX_POWEROFF	: Windowsを終了(シャットダウン後、電源を切る)	*
		*	EWX_FORCE		: プロセスを強制的に終了する					*
		*	EWX_FORCEIFHUNG	: ハングしたプロセスを強制的に終了する			*
		*	EWX_REBOOT		: Windowsを再起動								*
		*	EWX_SHUTDOWN	: Windowsをシャットダウン						*
		********************************************************************/
void	ShutDown(UINT32 uFlags = EWX_POWEROFF + EWX_FORCEIFHUNG);
void	Restart(UINT32 uFlags = EWX_REBOOT + EWX_FORCEIFHUNG);
void	GetMyPath(TCHAR *szDst , INT32 nFlag = GET_EXEPATH);
void	TraceLastError();
BOOL	PhysicalMemoryLock(PHYSMEMLOCK *tpInfo);
BOOL	PhysicalMemoryUnlock(PHYSMEMLOCK *tpInfo);
BOOL	MakeSureDirectoryPathExists(TCHAR *szTargetPath);
BOOL	GetFolder(HWND hWnd, TCHAR *szPath);
BOOL	DeleteDirectory(CString &strPath);
BOOL	DeleteDeadLineDirectory(CString &strPath, INT32 nDaysOfDeadLine);
BOOL	GetDiskSize(LPCTSTR szPath, DISK_INFO *tpInf, BOOL bNet = FALSE);
BOOL	ShowAndEnableCtrls(CWnd* pWnd, INT32 nMode, BOOL bFlg, CWnd* pOwner);
BOOL	GetCurrentDirectory(CString *str);
BOOL	GetCtrlRect(CWnd* pWnd , PRECT tpRect);
/****************************
*		 関数　宣言			*
****************************/
/****************************
*		 変数　宣言			*
****************************/
