
#ifndef _dkutilOS__h_
#define _dkutilOS__h_

#include "dKingyoMacro.h"
#include "dkutilDefined.h"

namespace dkutil{

/*!
@return 成功： edkOS / 失敗：-1 / 未知のOS:-2
*/
///OSのバージョンをゲットする。戻り値はedkOSを返します。
extern int GetOSVersion(void);


//なんかVC6ではコンパイルできないから、構造体の内容が違うみたいだし。
//Dev C++でも使ってください。 sourceforge.netからでも取り寄せて･･･
#if !(_MSC_VER <= 1200) 

/*!
@param Extension[in] edkOSExtensionの値が返る 0だと何でもない。
@return 成功：　edkOS / 失敗：-1 / 未知のOS:-2
*/
extern int GetOSVersionEx(int *Extension);

#endif

///WindowsOSがNT系かどうか
inline bool isOSNT(){
	int r=GetOSVersion();
	if(r != enuWindows3_1 && 
		r != enuWindows95 && 
		r != enuWindowsMe && 
		r != enuWindows98)
	{
		return true;
	}
	return false;
}

///OSが9x系かどうか
inline bool isOS9x(){
	return (!isOSNT());
}

/*!
GetOSVersion関数を内部で使ってそれをもとにWindowsの種類を文字列にする。<br>
@param [out] copybuff 文字列バッファのアドレスを渡します
@param [in] buffsize copybuffのサイズをバイト単位で入れます。
@return true = succeeded / false = failed
*/
///Windowsの種類を文字列にする。
inline bool GetOSName(char *copybuff,size_t buffsize){
	int temp=GetOSVersion();
	if(temp < 0)
		return false;
	static char *table[8]={
		"Windows3.1",
		"WindowsNT3.51",
		"WindowsNT4.0",
		"Windows95",
		"Windows98",
		"Windows2000",
		"WindowsMe",
		"WindowsXP"
	};
	if(copybuff != NULL && buffsize !=NULL){
		_snprintf(copybuff,buffsize,table[temp]);
	}else{
		return false;
	}
	return true;
}



	
}//end of dkutil namespace

#endif //end of include once

