わびさびサンプルソース

WindowsやHTML5などのプログラムのサンプルコードやフリーソフトを提供します。

ドライブの種別を調べる

指定されたドライブの種別を取得します。ドライブの種別の取得には、GetDriveType()関数を利用します。 交換可能か固定か、CD-ROM か RAM ディスクかネットワークドライブかを判別できます。

#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <windows.h>



/*
	ドライブの種別を調べる
*/
int _tmain
(
	  int argc
	, _TCHAR* argv[]
)
{
	// 標準出力にユニコード出力する
	setlocale( LC_ALL, "Japanese" );

	// 'C'~'Z'
	for ( int nI = L'C'; nI < L'Z'; nI++ ) {

		TCHAR waBuf[ MAX_PATH ];

		// パスの生成
		::_swprintf_p( waBuf, _countof( waBuf ), L"%c:¥¥", nI );
		std::wcout << waBuf << L" ->";

		// ドライブの種別の取得
		UINT nType = ::GetDriveType( waBuf );
		switch( nType ) {
		case DRIVE_UNKNOWN:
			{
				std::wcout << L"ドライブの種類を判別できませんでした。" << std::endl;
			}
			break;
		case DRIVE_NO_ROOT_DIR:
			{
				std::wcout << L"指定のルートディレクトリが存在しません。たとえば、パスにボリュームがマウントされていません(未フォーマットや、メディアが挿入されていないなど)。" << std::endl;
			}
			break;
		case DRIVE_REMOVABLE:
			{
				std::wcout << L"このディスクは、ドライブから取り出せます。" << std::endl;
			}
			break;
		case DRIVE_FIXED:
			{
				std::wcout << L"このディスクは、ドライブから取り出せません。" << std::endl;
			}
			break;
		case DRIVE_REMOTE:
			{
				std::wcout << L"このドライブは、リモート(ネットワーク)ドライブです。" << std::endl;
			}
			break;
		case DRIVE_CDROM:
			{
				std::wcout << L"このドライブは、CD-ROM ドライブです。" << std::endl;
			}
			break;
		case DRIVE_RAMDISK:
			{
				std::wcout << L"このドライブは、RAM ディスクです。" << std::endl;
			}
			break;
		}
	}

	// 正常終了
	return( 0 );
}



実行結果

C:\ ->このディスクは、ドライブから取り出せません。
D:\ ->このディスクは、ドライブから取り出せません。
E:\ ->このディスクは、ドライブから取り出せません。
F:\ ->このドライブは、CD-ROM ドライブです。
G:\ ->このディスクは、ドライブから取り出せません。
H:\ ->このディスクは、ドライブから取り出せません。
I:\ ->指定のルートディレクトリが存在しません。たとえば、パスにボリュームがマウン
トされていません(未フォーマットや、メディアが挿入されていないなど)。
J:\ ->このドライブは、CD-ROM ドライブです。
K:\ ->このディスクは、ドライブから取り出せません。
L:\ ->指定のルートディレクトリが存在しません。たとえば、パスにボリュームがマウン
トされていません(未フォーマットや、メディアが挿入されていないなど)。
M:\ ->指定のルートディレクトリが存在しません。たとえば、パスにボリュームがマウン
トされていません(未フォーマットや、メディアが挿入されていないなど)。
N:\ ->指定のルートディレクトリが存在しません。たとえば、パスにボリュームがマウン
トされていません(未フォーマットや、メディアが挿入されていないなど)。
O:\ ->このドライブは、CD-ROM ドライブです。
P:\ ->指定のルートディレクトリが存在しません。たとえば、パスにボリュームがマウン
トされていません(未フォーマットや、メディアが挿入されていないなど)。
Q:\ ->指定のルートディレクトリが存在しません。たとえば、パスにボリュームがマウン
トされていません(未フォーマットや、メディアが挿入されていないなど)。
R:\ ->指定のルートディレクトリが存在しません。たとえば、パスにボリュームがマウン
トされていません(未フォーマットや、メディアが挿入されていないなど)。
S:\ ->指定のルートディレクトリが存在しません。たとえば、パスにボリュームがマウン
トされていません(未フォーマットや、メディアが挿入されていないなど)。
T:\ ->指定のルートディレクトリが存在しません。たとえば、パスにボリュームがマウン
トされていません(未フォーマットや、メディアが挿入されていないなど)。
U:\ ->指定のルートディレクトリが存在しません。たとえば、パスにボリュームがマウン
トされていません(未フォーマットや、メディアが挿入されていないなど)。
V:\ ->このディスクは、ドライブから取り出せます。
W:\ ->このディスクは、ドライブから取り出せます。
X:\ ->このディスクは、ドライブから取り出せます。
Y:\ ->このディスクは、ドライブから取り出せます。






わびさびサンプルソース

WindowsやHTML5などのプログラムのサンプルコードやフリーソフトを提供します。