[ C# ] ドライブをフォーマットする ( Win32_Volume.Format )

Pocket

ここでは、WMI の Win32_Volume.Format 関数を使用して論理ドライブをフォーマットするサンプルコードを掲載しています。

スポンサーリンク

ドライブのフォーマット

WMI の Win32_Volume.Format 関数を使用して、論理ドライブをフォーマットするサンプルコードは次の通りです。詳細はコメントも参照ください。

// 参照の追加を行う必要あり
//using System.Management;

string driveLetter = @"K:";         // ドライブレター
string fileSystem = @"FAT32";      // NTFS, FAT, FAT32 
bool quickFormat = true;          // クイックフォーマット
UInt32 clusterSize = 8192;          // クラスタサイズ
string label = @"VOL_LABEL";  // ボリュームラベル
bool enableCompression = false;         // 圧縮(Format関数では未実装らしい)

// ボリューム情報を取得
ManagementObjectSearcher sea;
string query = @"select * from Win32_Volume WHERE DriveLetter = '" + driveLetter + "'";
sea = new ManagementObjectSearcher(query);

foreach (ManagementObject mo in sea.Get())
{
    // Format 関数のパラメータ設定
    ManagementBaseObject inParams = mo.GetMethodParameters("Format");

    inParams["FileSystem"] = fileSystem;
    inParams["QuickFormat"] = quickFormat;
    inParams["ClusterSize"] = clusterSize;
    inParams["Label"] = label;
    inParams["EnableCompression"] = enableCompression;

    // フォーマット実行
    ManagementBaseObject outParams;
    outParams = mo.InvokeMethod("Format", inParams, null);
    if (outParams["returnValue"].ToString() != "0")
    {
        // エラー発生
    }
}

Format 関数のリターン値

Win32_Volume.Format 関数のリターン値は下表のとおりです。下段の参考リンクより詳細を確認ください。

リターン値説明
0Success
1Unsupported file system
2Incompatible media in drive
3Access denied
4Call canceled
5Call cancellation request too late
6Volume write protected
7Volume lock failed
8Unable to quick format
9Input/Output (I/O) error
10Invalid volume label
11No media in drive
12Volume is too small
13Volume is too large
14Volume is not mounted
15Cluster size is too small
16Cluster size is too large
17Cluster size is beyond 32 bits
18Unknown error

 

参考

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *