CD-ROMのイジェクト(OS自動判別)

解説

 メディアのイジェクトはWindows 9x系とWindows NT系で方法が異なり、また、その方法自体 が結構複雑で面倒。そのためここでは簡単にメディアを取り出せるようにOSを判別するクラス を作成した。

 ここで示したソースコードはOSの自動判別部分のみしか含んでいない。実際のメディア取り 出し処理は基底クラスであるCDnpMediaEjectNtとCDnpMediaEject9xに実装している。これら のクラスについては「CD-ROMのイジェクト(Win9x) 」 と「CD-ROMのイジェクト(WinNT/2000/XP)」に 書かれている。



使用例


	CDnpMediaEject	cEject;

	cEject.EjectVolume(_T('F'));



ソースコード


//
//	メディアのイジェクト(OS自動判別)
//
//	Windows NT/2000/XP系は以下のURLを参照
//		http://support.microsoft.com/kb/q165721/
//
//	Windows95/98/Me系は以下のURLを参照
//		http://support.microsoft.com/kb/q168180/
//
class	CDnpMediaEject : public CDnpMediaEjectNt, public CDnpMediaEject9x
{
public:

	//
	//	メディアのイジェクト
	//
	bool	EjectVolume(TCHAR cDriveLetter,DWORD dwTimeouts=5000)
	{
		BOOL			ret;
		OSVERSIONINFO	sInfo;

		ZeroMemory(&sInfo,sizeof(OSVERSIONINFO));
		sInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

		ret = ::GetVersionEx(&sInfo);
		if(ret == FALSE)
			return	false;

		//Windows 9x系
		if(sInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
			return	CDnpMediaEject9x::EjectVolume(cDriveLetter);

		//Windows NT系
		if(sInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
			return	CDnpMediaEjectNt::EjectVolume(cDriveLetter,dwTimeouts);

		return	false;
	}
};

カテゴリー「VC++ TIPS」 のエントリー