C ++ディスクドライブトラバース

する#include <stdio.hに> 
する#include <WINDOWS.H> 

のtypedef 構造体tagDRIVER 
{ 
    // (1)ドライブレター
    ディスクのwchar_t;
     // (2)の合計ディスクサイズ
    ダブルすべて;
     // 利用可能なディスクスペース(3)
    二重 フリー;
     // (4)磁気ディスク(光ディスク、ハードディスク、又はモバイルハードディスク)型
    のint タイプ; 
}ドライバと、

ボイドgetDrivers()
{ 
    BOOL FRESULT; 
    // ディスク情報構造を定義する
    ドライバにDIRを;
     // ディスクを横断
    するため(のwchar_t = D ' A ' ; D <= ' Z '; D ++ 
    { 
        // ディスクメッセージ構造は、0クリア 
        のmemset(&DIR、0はsizeof (DRIVER)); 
        未署名_int64 i64FreeBytesToCaller、
        符号なし_int64のi64TotalBytes; 
        ;符号なし_int64のi64FreeBytes 
        TCHAR szTemp [ 3。 = {Dを、] ' '' \ 0 " };
         // ディスクタイプが取得 
        UINT uType = GetDriveTypeW(szTempが);
         // DRIVE_UNKNOWNドライブの種類を決定することはできません。
        // DRIVE_NO_ROOT_DIRルートパスが無効である;例えば、ボリュームが指定されたパスにインストールされていません。
        //DRIVE_REMOVABLEドライブは、リムーバブルメディアを有し、例えば、フロッピーディスクドライブ、サムドライブ、又はフラッシュメモリカードリーダ。
        // DRIVE_FIXEDドライブがメディアを固定している;例えば、ハードディスクドライブやフラッシュドライブ。
        // DRIVE_REMOTEドライブは、リモート(ネットワーク)ドライブです。
        // DRIVE_CDROMドライブは、CD-ROMドライブがあります。
        // DRIVE_RAMDISKドライブはRAMディスクです。
        スイッチ(uType)
        { 
        ケースDRIVE_FIXEDは:
        { 
            // 。ハードドライブは1 
            dir.type = 1 ;
             BREAK ; 
        } 
        ケースDRIVE_CDROM:
        { 
            // 光ディスク2である 
            dir.type = 2 ;
             BREAK  
        }
        ケースDRIVE_REMOTEは:
        { 
            // ドライブである3。 
            dir.type = 3 ;
             BREAK ; 
        } 
        デフォルト
        { 
            続行; 
        } 
        } 
        // 組織を入手GetDiskFreeSpaceEx約残りのディスクの空き容量情報 
        FRESULT = GetDiskFreeSpaceEx(szTemp、(PULARGE_INTEGER )&i64FreeBytesToCaller、(PULARGE_INTEGER)&i​​64TotalBytes、(PULARGE_INTEGER)&i64FreeBytes);
         // 文字 
        dir.disk = D;
         IF (FRESULT)
        { 
            dir.all =(ダブル)(i64TotalBytes / 1024.0 / 1024個の / 1024個の
            。DIR 無料 =(ダブル)(i64FreeBytesToCaller / 1024.0 / 1024個の / 1024個の); 
        } 
        
        { 
            dir.all = 0.0 ; 
            。DIR 無料 = 0.0 ; 
        } 
        のprintf(" %Cプレート:合計%.2fGB、利用可能%.2fGB、ディスクタイプ:%D \ N- "。、dir.disk、dir.all、DIR フリー、dir.type); 
    } 
}

INTメイン()
{ 
    GetDrivers()。
    getchar関数(); 
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/duxie/p/11204081.html