你目前正处于脱机状态,正在等待 Internet 重新连接

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

本文的发布号曾为 CHS264203
概要
Win32 应用程序可以使用 SetupDi API 来枚举系统中的所有可用设备。Enumdisk1.exe 示例通过枚举所有磁盘设备(与磁盘类型无关)来演示该方法。该示例还获取设备句柄,以便通过发送 IOCTL 命令来获取适配器和设备属性。而且,它发送一个小型计算机系统接口 (SCSI) 直通命令用于获取数据。
更多信息
下列文件可从 Microsoft 下载中心下载:
发布日期: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
enumdisk1
属性

文章 ID:264203 - 上次审阅时间:08/13/2004 15:56:00 - 修订版本: 2.3

  • 适用于 Windows 2000 的 Microsoft Win32 设备驱动程序工具包
  • kbdownload kboswin2000 kbgraphxlinkcritical kbfile kbddk KB264203
反馈
ft.com/ms.js" '="">