プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

ドライブの種類を調べる

2007年09月24日 02時18分55秒 | ディスク関連

指定ドライブの種類を調べるには GetDriveType 関数を使います。
交換可能とは、FDD(フロッピー・ディスク・ドライブ)のようなドライブです。
交換不可能とは、HDD(ハード・ディスク・ドライブ)のようなドライブです。
CD-ROMドライブとは、CD-ROM/R/RW、DVD-ROM/R/RW/RAMなどの光ディスク・ドライブです。(戻る)

ドライブの種類

  1. 交換可能なドライブ
  2. 交換不可能なドライブ(固定)
  3. CD-ROMドライブ
  4. RAMドライブ
  5. ネットワーク・ドライブ

プロトタイプ宣言

UINT GetDriveType(
    LPCTSTR     lpRootPathName      // ルートディレクトリ
);

サンプル

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

// break付きのキーワード
#define CASE        break;case
#define DEFAULT     break;default

// メイン関数
int main( void )
{
    TCHAR       szRoot[ 16 ];
    LPCTSTR     lpMedia;
    INT         nDrive;
    
    // 結果表示
    printf( TEXT("GetDriveType()関数のテスト\n") );
    printf( TEXT("\n") );
    // ドライブの種類
    for ( nDrive = TEXT('A') ; nDrive <= TEXT('Z') ; nDrive++ ){
        sprintf( szRoot, TEXT("%c:\\"), nDrive );
        
        switch ( GetDriveType(szRoot) ){
            CASE DRIVE_UNKNOWN:         lpMedia = TEXT("不明なドライブ");
            CASE DRIVE_NO_ROOT_DIR:     lpMedia = TEXT("ドライブが存在しない");
            CASE DRIVE_REMOVABLE:       lpMedia = TEXT(" FD ドライブ");
            CASE DRIVE_FIXED:           lpMedia = TEXT(" HD ドライブ");
            CASE DRIVE_REMOTE:          lpMedia = TEXT("ネットワーク・ドライブ");
            CASE DRIVE_CDROM:           lpMedia = TEXT(" CD-ROM ドライブ");
            CASE DRIVE_RAMDISK:         lpMedia = TEXT(" RAM ディスク");
            DEFAULT:                    lpMedia = TEXT("?????");
        }
        printf( TEXT("ドライブ %s のメディアは%sです。\n"), szRoot, lpMedia );
    }
    return 0;
}

実行結果

GetDriveType()関数のテスト

ドライブ A:\ のメディアはドライブが存在しないです。
ドライブ B:\ のメディアはドライブが存在しないです。
ドライブ C:\ のメディアは HD ドライブです。
ドライブ D:\ のメディアは HD ドライブです。
ドライブ E:\ のメディアは CD-ROM ドライブです。
ドライブ F:\ のメディアは HD ドライブです。
ドライブ G:\ のメディアは HD ドライブです。
ドライブ H:\ のメディアは FD ドライブです。
ドライブ I:\ のメディアは FD ドライブです。
ドライブ J:\ のメディアはドライブが存在しないです。
ドライブ K:\ のメディアはドライブが存在しないです。
ドライブ L:\ のメディアはドライブが存在しないです。
ドライブ M:\ のメディアはドライブが存在しないです。
ドライブ N:\ のメディアはドライブが存在しないです。
ドライブ O:\ のメディアはドライブが存在しないです。
ドライブ P:\ のメディアはドライブが存在しないです。
ドライブ Q:\ のメディアはドライブが存在しないです。
ドライブ R:\ のメディアはドライブが存在しないです。
ドライブ S:\ のメディアはドライブが存在しないです。
ドライブ T:\ のメディアはドライブが存在しないです。
ドライブ U:\ のメディアはドライブが存在しないです。
ドライブ V:\ のメディアはドライブが存在しないです。
ドライブ W:\ のメディアはドライブが存在しないです。
ドライブ X:\ のメディアはドライブが存在しないです。
ドライブ Y:\ のメディアはドライブが存在しないです。
ドライブ Z:\ のメディアは HD ドライブです。
  • 私の環境ではFDD(フロッピー・ディスク・ドライブ)が存在しないので A: B: が存在しないと表示されます。
  • パソコンに内蔵されたHDD(ハードディスク・ドライブ)が2つに分かれてるので C: D: 「HD ドライブ」と表示されます。
  • また、外付けで小型のHDD(ハードディスク・ドライブ)を2つ接続してるので F: G: も「HD ドライブ」と表示されます。
  • あと、USBフラッシュ・メモリを2つ接続してるので H: I: がFDDではないけれども「FD ドライブ」と表示されます。
  • 最後の Z: は C: ドライブのフォルダを SUBST コマンドで仮想ドライブ化してるので「HD ドライブ」と表示されます。

関連記事



コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ディスク容量の取得(2) | トップ | 有効なドライブ名を調べる »
最新の画像もっと見る

コメントを投稿

ディスク関連」カテゴリの最新記事