Enumdisk1.exe:用于枚举磁盘设备的 Enumdisk 示例

文章翻译 文章翻译
文章编号: 264203 - 查看本文应用于的产品
本文的发布号曾为 CHS264203
展开全部 | 关闭全部

本文内容

概要

Win32 应用程序可以使用 SetupDi API 来枚举系统中的所有可用设备。Enumdisk1.exe 示例通过枚举所有磁盘设备(与磁盘类型无关)来演示该方法。该示例还获取设备句柄,以便通过发送 IOCTL 命令来获取适配器和设备属性。而且,它发送一个小型计算机系统接口 (SCSI) 直通命令用于获取数据。

更多信息

下列文件可从 Microsoft 下载中心下载:
收起这个图片展开这个图片
 下载
立即下载 Enumdisk1.exe
发布日期:2000 年 9 月 21 日

有关如何下载 Microsoft 支持文件的其他信息,请单击以下文章编号,查看 Microsoft 知识库中的文章:
119591 How to Obtain Microsoft Support Files from Online Services(如何从联机服务获取 Microsoft 支持文件)
Microsoft 已对该文件进行过病毒扫描。在发表当日 Microsoft 使用了最新的病毒检测软件以扫描此文件是否有病毒。此文件保存在安全服务器上,以防对它进行任何未经授权的更改。

Enumdisk1.exe 文件包含下列文件:
文件           描述
--------------------------

Enumdisk.c     实现 Win32 应用程序以枚举磁盘设备。
Enumdisk.h     Enumdisk.c 的头文件
Sources        DDK 编译指令
Enumdisk.htm   这些示例的文档(本文件)
Enumdisk.exe   Windows 2000 可执行程序(自由生成)

设备枚举

Enumdisk1.exe 示例文件使用 Setup 类的 GUID_DEVCLASS_DISKDRIVE 全局唯一标识符 (GUID) 来枚举系统中安装的所有磁盘设备。然后,该示例会通过获取 Registry 属性来获取设备 ID。

在从 Win32 应用程序发送 IOCTL 时需要设备的句柄。通过打开具有设备接口名的设备,可获取设备句柄。磁盘类驱动程序通过注册设备接口来公开该接口。它使用 GUID_DEVINTERFACE_DISKD 接口 GUID 来注册设备。Win32 应用程序可通过使用具有相同接口 GUID 的 SetupDi API 来获取该接口名。通过在循环中执行该操作,可获取所有已注册的磁盘接口。因为该值是从磁盘类驱动程序获取的,所以该方法适用于所有类型的磁盘设备,如 SCSI、集成设备电路 (IDE)、通用串行总线 (USB) 和 电气和电子工程师协会 (IEEE) 1394。

设备属性

IOCTL_STORAGE_QUERY_PROPERTY 可用于分别获取适配器属性和设备属性。该 IOCTL 将 STORAGE_PROPERTY_QUERY 数据结构视为一个参数。在调用该 IOCTL 之前,必须对 STORAGE_PROPERTY_ID STORAGE_QUERY_TYPE 成员进行相应的设置。STORAGE_PROPERTY_ID 可设置为 StorageAdapterProperty StorageDeviceProperty,它确定要返回的属性。该数据结构及其成员的值是在 \Ntddk\Inc\Ntddstor.h 中定义的。

调用该 StorageAdapterProperty IOCTL 会返回 STORAGE_ADAPTER_DESCRIPTOR 数据结构,其中会包含"总线类型"、"最大传输长度"、"对齐掩码"等一些适配器属性。StorageDeviceProperty 会返回 STORAGE_DEVICE_DESCRIPTOR 数据结构,其中包含"设备类型"、"厂商 ID"、"产品 ID",等等。该信息是从各自的端口驱动程序获取的。有关该 IOCTL 和数据结构的更多信息,请参阅 Windows 2000 DDK 文档。

SCSI 直通命令接口

按照这种方式获取的设备句柄还可用于将 SCSI 直通命令发送到设备。该示例将 Inquiry 命令发送到设备以获取 Inquiry 数据。有关 SCSI 传递接口的更多信息,请参阅 Windows 2000 DDK 中的 SPTI 示例。

生成示例

单击位"开发工具包"程序组下的自由生成环境可调试的生成环境图标,以设置 Build 实用工具所需的基本环境变量。

转到设备源代码所在的文件夹,例如:
cd c:\enumdisk
通过键入 build -ceZ 或使用 BLD 宏来运行 Build 实用工具。该方法将调用 Microsoft 生成例程,它们会在出现警告或错误时生成名为 Build xxx.log、Build xxx.wrn 和 Build xxx.err 的日志文件。

请注意,xxx 代表"fre"或"chk",具体情况取决于所选环境。如果生成成功,Enumdisk.exe 可执行文件将放置在 %TargetPath% 文件夹(在源文件中指定)的平台特定的子文件夹中。

运行 Enumdisk1.exe 示例

该示例无需任何参数。从命令提示符窗口运行该示例;将列出所有的磁盘设备属性。

参考

Microsoft Windows 2000 Driver Development Kit

属性

文章编号: 264203 - 最后修改: 2004年8月13日 - 修订: 2.3
这篇文章中的信息适用于:
  • 适用于 Windows 2000 的 Microsoft Win32 设备驱动程序工具包
关键字:?
kbdownload kboswin2000 kbgraphxlinkcritical kbfile kbddk KB264203
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com