ここでは、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 関数のリターン値は下表のとおりです。下段の参考リンクより詳細を確認ください。
| リターン値 | 説明 |
|---|---|
| 0 | Success |
| 1 | Unsupported file system |
| 2 | Incompatible media in drive |
| 3 | Access denied |
| 4 | Call canceled |
| 5 | Call cancellation request too late |
| 6 | Volume write protected |
| 7 | Volume lock failed |
| 8 | Unable to quick format |
| 9 | Input/Output (I/O) error |
| 10 | Invalid volume label |
| 11 | No media in drive |
| 12 | Volume is too small |
| 13 | Volume is too large |
| 14 | Volume is not mounted |
| 15 | Cluster size is too small |
| 16 | Cluster size is too large |
| 17 | Cluster size is beyond 32 bits |
| 18 | Unknown error |
参考