本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。(转载请指明出于breaksoftware的csdn博客)
本节主要介绍Win32_DiskPartition和Win32_LogicalDisk两个类的应用。Win32_DiskPartition用于查询磁盘分区信息,Win32_LogicalDisk用于查询逻辑磁盘信息。
如何使用WMI枚举所有磁盘分区信息?
SELECT * FROM Win32_DiskPartition
以上是我查询我本机的信息。在我这台电脑上,装有两块硬盘,其中第二块安装上去的硬盘是500G,它的信息由上图第一组数据体现。第一款硬盘是160G,被分成60G的系统盘和90G的普通盘。其中系统盘信息由上图中第二组数据体现,而90G的逻辑盘由上图中最后一组数据体现。现在我们将拆开这些信息,讲解如何利用这些信息。
如何使用WMI获取系统启动盘所在的硬盘ID(非序列号)?
SELECT DiskIndex FROM Win32_DiskPartition WHERE Bootable = TRUE
如何使用WMI查询指定磁盘上有多少分区?
SELECT Index FROM Win32_DiskPartition WHERE DiskIndex = 0
如何使用WMI获取指定分区的大小?
SELECT Size FROM Win32_DiskPartition WHERE DiskIndex = 1 AND Index = 0
如何使用WMI获取指定分区上有多少块(BLOCK)及每块的大小?
SELECT BlockSize,NumberOfBlocks FROM Win32_DiskPartition WHERE DiskIndex = 1 AND Index = 0
如何使用WMI枚举所有逻辑磁盘信息?
SELECT * FROM Win32_LogicalDisk目前我电脑上有如下逻辑磁盘
C、D盘是在一块硬盘上,它们的信息是
E盘是在另一个独立的硬盘上,它的信息是
其他磁盘的信息是:
如何使用WMI查询指定盘符的逻辑磁盘名?
SELECT VolumeName FROM Win32_LogicalDisk WHERE NAME = 'C:'
SELECT DriveType FROM Win32_LogicalDisk WHERE NAME = 'C:'
Value | Meaning |
---|---|
|
Unknown |
|
No Root Directory |
|
Removable Disk |
|
Local Disk |
|
Network Drive |
|
Compact Disc |
|
RAM Disk |
SELECT Size,FreeSpace FROM Win32_LogicalDisk WHERE NAME = 'C:'
SELECT FileSystem FROM Win32_LogicalDisk WHERE NAME = 'C:'
SELECT VolumeSerialNumber FROM Win32_LogicalDisk WHERE NAME = 'C:'
工程源码见《WMI技术介绍和应用——WMI概述》结尾。