指定设备特征

每个设备对象可以具有一个或多个设备特征。 设备特征作为标志存储在设备对象的DEVICE_OBJECT结构的“特征”成员中。

大多数驱动程序仅指定FILE_DEVICE_SECURE_OPEN特征。 这可确保将相同的安全设置应用于设备命名空间中任何打开的请求。 有关详细信息,请参阅 控制设备命名空间访问

FILE_AUTOGENERATED_DEVICE_NAME仅用于 PDO。 FILE_FLOPPY_DISKETTE、FILE_REMOVABLE_MEDIA和FILE_WRITE_ONCE_MEDIA特征特定于存储设备。 有关可能的设备特征标志的说明,请参阅 DEVICE_OBJECT特性成员的说明。

某些设备特征(例如FILE_AUTOGENERATED_DEVICE_NAME)仅适用于单个设备对象。 驱动程序可以通过调用 IoCreateDevice 或 IoCreateDeviceSecure 为单个设备对象指定设备对象的设备特征设置

以下特征适用于整个设备堆栈:

FILE_DEVICE_SECURE_OPEN

FILE_FLOPPY_DISKETTE

FILE_READ_ONLY_DEVICE

FILE_REMOVABLE_MEDIA

FILE_WRITE_ONCE_MEDIA

驱动程序可以通过调用 IoCreateDevice 或 IoCreateDeviceSecure 来设置适用于整个设备堆栈的设备特征。 或者,可以在注册表中为设备或设备的安装类设置适用于整个设备堆栈的设备特征。 (有关详细信息,请参阅 在 Registry 中设置设备对象属性。)

PnP 管理器确定设备特征的注册表设置,如下所示。

  • 如果为单个设备指定了值,则 PnP 管理器将使用该值;

  • 否则,如果为设备安装类指定了值,则 PnP 管理器将使用该值;

  • 否则,PnP 管理器使用值零作为注册表设置。

如果在注册表中设置了适用于整个设备堆栈的设备特征,或者为堆栈中的任何 FDO 或筛选器 DO 设置了设备特征,则 PnP 管理器会为堆栈中的每个设备对象设置它。 (如果设备支持 原始模式 ,因此没有 FDO,则 PnP 管理器将改用 PDO。)