HDDフォーマット形式の取得方法 - Insider .NET会議室 より。
回答にて ちなみに、WMI でドライブレターからそのパーティションを探すには、Win32_LogicalDiskToPartition を使用できます。.NET(System.Management)だと使いづらいんですが。
などと書いてしまったわけですが、単に私の勉強不足による誤解でした。
ある WMI クラスインスタンスに関連するクラスインスタンスを取得するのに、WQL で ASSOCIATORS OF クエリを使うことができます。C ドライブの Win32_DiskPartition を取得するにはこんな感じのクエリになります。見れば大体分かると思うので解説は略。
ASSOCIATORS OF {Win32_LogicalDisk.DeviceID='C:'} WHERE
ResultClass=Win32_DiskPartition AssocClass=Win32_LogicalDiskToPartition
ResultRole=Antecedent Role=Dependent
上記はきわめて丁寧に書いた場合で、手を抜ききるとこんな感じになります。
ASSOCIATORS OF {Win32_LogicalDisk='C:'} WHERE ResultClass=Win32_DiskPartition
もちろん、System.Management でもこのクエリを使うことができます。ManagementObjectSearcher のコンストラクタに直接上記のクエリを渡すのが手っ取り早いでしょう。
クエリ構文が思いつかない、という場合、パラメータを渡すことで ASSOCIATORS OF クエリの構築を行ってくれる RelatedObjectQuery クラスも存在しています。このクラスを使った場合はこんな感じになります。
// 丁寧に書いた版
var query = new RelatedObjectQuery("Win32_LogicalDisk='C:'", "Win32_DiskPartition",
"Win32_LogicalDiskToPartition", null, null, "Antecedent", "Dependent", false);
var searcher = new ManagementObjectSearcher(query);
// 省略版
var query = new RelatedObjectQuery("Win32_LogicalDisk='C:'", "Win32_DiskPartition");