前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WMI技术介绍和应用——查询磁盘分区和逻辑磁盘信息

WMI技术介绍和应用——查询磁盘分区和逻辑磁盘信息

作者头像
方亮
发布2019-01-16 10:45:19
3.2K1
发布2019-01-16 10:45:19
举报
文章被收录于专栏:方亮方亮

        本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。(转载请指明出于breaksoftware的csdn博客)

        本节主要介绍Win32_DiskPartitionWin32_LogicalDisk两个类的应用。Win32_DiskPartition用于查询磁盘分区信息,Win32_LogicalDisk用于查询逻辑磁盘信息。

如何使用WMI枚举所有磁盘分区信息?

代码语言:javascript
复制
SELECT * FROM Win32_DiskPartition

        以上是我查询我本机的信息。在我这台电脑上,装有两块硬盘,其中第二块安装上去的硬盘是500G,它的信息由上图第一组数据体现。第一款硬盘是160G,被分成60G的系统盘和90G的普通盘。其中系统盘信息由上图中第二组数据体现,而90G的逻辑盘由上图中最后一组数据体现。现在我们将拆开这些信息,讲解如何利用这些信息。

如何使用WMI获取系统启动盘所在的硬盘ID(非序列号)?

代码语言:javascript
复制
SELECT DiskIndex FROM Win32_DiskPartition WHERE Bootable = TRUE

        在装有多块硬盘的机器上,这个功能很重要。比如我们想尝试获取一个硬盘序列号,来作为计算用户唯一码的因子,此时获取一个固定的硬盘ID就很重要了。因为插拔硬盘的原因,WMI枚举到的第一个硬盘信息是不确定的。

如何使用WMI查询指定磁盘上有多少分区?

代码语言:javascript
复制
SELECT Index FROM Win32_DiskPartition WHERE DiskIndex = 0

        这标志该磁盘有两个分区。

如何使用WMI获取指定分区的大小?

代码语言:javascript
复制
SELECT Size FROM Win32_DiskPartition WHERE DiskIndex = 1 AND Index = 0

        该大小是以BYTES为单位的。

如何使用WMI获取指定分区上有多少块(BLOCK)及每块的大小?

代码语言:javascript
复制
SELECT BlockSize,NumberOfBlocks FROM Win32_DiskPartition WHERE DiskIndex = 1 AND Index = 0

        这两个数值的积就是该磁盘的Size大小。

如何使用WMI枚举所有逻辑磁盘信息?

代码语言:javascript
复制
SELECT * FROM Win32_LogicalDisk

        目前我电脑上有如下逻辑磁盘

        其中A盘,是一个网络映射磁盘。它的信息是

        C、D盘是在一块硬盘上,它们的信息是

        E盘是在另一个独立的硬盘上,它的信息是

        其他磁盘的信息是:

如何使用WMI查询指定盘符的逻辑磁盘名?

代码语言:javascript
复制
SELECT VolumeName FROM Win32_LogicalDisk WHERE NAME = 'C:'

如何使用WMI查询指定盘符的逻辑磁盘类型?

代码语言:javascript
复制
SELECT DriveType FROM Win32_LogicalDisk WHERE NAME = 'C:'

        一般来说,逻辑磁盘可以分为:网络映射磁盘、本地磁盘和移动磁盘。如我电脑上A盘的类型就是4,CDE盘的类型是3,FI盘(光驱)的类型是5。有个特例,我电脑上的金山快盘是标记为2(移动磁盘类型)。它们具体的对应关系是

Value

Meaning

0

Unknown

1

No Root Directory

2

Removable Disk

3

Local Disk

4

Network Drive

5

Compact Disc

6

RAM Disk

如何使用WMI查询指定盘符的分区空间和剩余空间?

代码语言:javascript
复制
SELECT Size,FreeSpace FROM Win32_LogicalDisk WHERE NAME = 'C:'

如何使用WMI查询指定盘符的分区的文件系统类型?

代码语言:javascript
复制
SELECT FileSystem FROM Win32_LogicalDisk WHERE NAME = 'C:'

如何使用WMI查询指定盘符的分区的序列号(非硬盘序列号)?

代码语言:javascript
复制
SELECT VolumeSerialNumber FROM Win32_LogicalDisk WHERE NAME = 'C:'

        工程源码见《WMI技术介绍和应用——WMI概述》结尾。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013年01月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档