ちぇりーの館

1−4 C言語プログラミング小ネタ講座 
CD・DVDのドライブ判定



お久しぶりっス! 今回の小ネタは、CD・DVDのドライブ判定です。 現在実行されているプログラムがどのドライブから起動されているのかを知る事は以外に重要です。 例えば、起動されているドライブがCD・DVD上ならファイルの書き込みが行えなかったりします。 また、インストール時にプロテクトをかけている場合には、CD・DVD上で起動されてはプロテクトの意味がありません。 対象のドライブが何であるかは、GetDriveType関数を使えば簡単に知る事が出来ます。


・CD・DVDのドライブ判定プログラム

#include "windows.h"

〜〜〜〜〜〜〜〜
/* 調査対象のドライブパス。 */
char curDir[] = "D:\\";

/* ドライブのチェック結果を取得する */
switch(GetDriveType( &curDir[0] ))
{
    case DRIVE_UNKNOWN:     MessageBox( NULL, "ドライブの種別が不明です。",                           "ドライブチェック", MB_OK ); break;
    case DRIVE_NO_ROOT_DIR: MessageBox( NULL, "指定のディレクトリが見つかりませんでした。",	          "ドライブチェック", MB_OK ); break;
    case DRIVE_REMOVABLE:   MessageBox( NULL, "このディスクは、ドライブから取り出せます。",	          "ドライブチェック", MB_OK ); break;
    case DRIVE_FIXED:       MessageBox( NULL, "このディスクは、ドライブから取り出せません。",         "ドライブチェック", MB_OK ); break;
    case DRIVE_REMOTE:      MessageBox( NULL, "このドライブは、リモート(ネットワーク)ドライブです。", "ドライブチェック", MB_OK ); break;
    case DRIVE_CDROM:       MessageBox( NULL, "このドライブは、CD・DVDドライブです。",				  "ドライブチェック", MB_OK ); break;
    case DRIVE_RAMDISK:     MessageBox( NULL, "このドライブは、RAMディスクです。",					  "ドライブチェック", MB_OK ); break;
    default:
        MessageBox(NULL, "ドライブの判別処理に失敗しました。",	"ドライブチェック", MB_OK ); break;
        break;
}

・GetDriveType

今回のプログラムでは、この関数の戻り値によってドライブの判別を行います。

関数名  GetDriveType
概要  ドライブ情報の取得を行います。
引数 LPCTSTR lpRootPathName  情報の取得元のディレクトリパスを指定します。また、ディレクトリ名の最後には、"¥"を付けます。 もし、ディレクトリ名に、NULLを指定した場合には、カレントディレクトリが指定されます。
戻り値 UINT ドライブの情報を返します。情報は、以下のいずれかになります。
意味
DRIVE_UNKNOWN ドライブの種類が不明です。
DRIVE_NO_ROOT_DIR 対象のディレクトリが存在しません。
DRIVE_REMOVABLE このディスクとは、ドライブから取り出せます。
DRIVE_FIXED このドライブは、ドライブから取り出せません。
DRIVE_REMOTE このドライブは、リモートドライブ(ネットワークドライブ)です。
DRIVE_CDROM このドライブは、CD-ROM(DVD-ROM)ドライブです。CD・DVDのどちらも、区別しない。
DRIVE_RAMDISK このドライブは、RAMディスクです。


今回のプログラムは、単純な処理なので、大規模なプログラムを組む際は、機械的に入れて置けばいいですよ (;-v-)/


今回紹介したサンプルプログラムをzipにしてありますので、良かったら参考にしてください。
ダウンロード


< 一覧ページへ戻る


当サイトが面白いと感じた方は、お手数ですが下記リンクをクリックしてください。
クリック毎に当ホームページの評価が上がります。ご協力お願いします!
inserted by FC2 system inserted by FC2 system