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