指定されたドライブの種別を取得します。ドライブの種別の取得には、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:\ ->このディスクは、ドライブから取り出せます。