DEVICE_CAPABILITIES wdm.h ()
一 DEVICE_CAPABILITIES 结构描述设备的 PnP 和电源功能。 返回此结构以响应 IRP IRP_MN_QUERY_CAPABILITIES 响应。
语法
typedef struct _DEVICE_CAPABILITIES {
USHORT Size;
USHORT Version;
ULONG DeviceD1 : 1;
ULONG DeviceD2 : 1;
ULONG LockSupported : 1;
ULONG EjectSupported : 1;
ULONG Removable : 1;
ULONG DockDevice : 1;
ULONG UniqueID : 1;
ULONG SilentInstall : 1;
ULONG RawDeviceOK : 1;
ULONG SurpriseRemovalOK : 1;
ULONG WakeFromD0 : 1;
ULONG WakeFromD1 : 1;
ULONG WakeFromD2 : 1;
ULONG WakeFromD3 : 1;
ULONG HardwareDisabled : 1;
ULONG NonDynamic : 1;
ULONG WarmEjectSupported : 1;
ULONG NoDisplayInUI : 1;
ULONG Reserved1 : 1;
ULONG WakeFromInterrupt : 1;
ULONG SecureDevice : 1;
ULONG ChildOfVgaEnabledBridge : 1;
ULONG DecodeIoOnBoot : 1;
ULONG Reserved : 9;
ULONG Address;
ULONG UINumber;
DEVICE_POWER_STATE DeviceState[POWER_SYSTEM_MAXIMUM];
SYSTEM_POWER_STATE SystemWake;
DEVICE_POWER_STATE DeviceWake;
ULONG D1Latency;
ULONG D2Latency;
ULONG D3Latency;
} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
成员
Size
指定结构的大小(以字节为单位)。 此字段由发送请求的组件IRP_MN_QUERY_CAPABILITIES设置。
Version
指定结构的版本,当前版本 1。 此字段由发送请求的组件IRP_MN_QUERY_CAPABILITIES设置。
DeviceD1
指定设备硬件是否支持 D1 电源状态。 驱动程序不应更改此值。
DeviceD2
指定设备硬件是否支持 D2 电源状态。 驱动程序不应更改此值。
LockSupported
指定设备是否支持防止设备弹出的物理设备锁定。 此成员涉及从设备槽弹出设备,而不是从设备弹出一段可移动媒体。
EjectSupported
指定当系统为 PowerSystemWorking 时,设备是否支持软件控制的设备弹出。 此成员涉及从设备槽弹出设备,而不是从设备弹出一段可移动媒体。
Removable
指定是否可以从设备的直接父级动态删除设备。 如果 "可移动 "设置为 TRUE,则设备不属于其父级相同的物理对象。
例如,如果多功能打印机内的 USB 复合设备的"可移动"设置为 TRUE,则复合设备不属于其直接父级的物理对象,例如笔记本电脑内的 USB 集线器。
在大多数情况下,总线驱动程序(而不是函数驱动程序)应确定 设备的 Removable 参数的值。 对于 USB 设备,USB 集线器驱动程序设置 可移动 参数。 函数驱动程序不应修改它。
如果"可移动"设置为 TRUE,则设备将显示在"拔下"或"弹出硬件"程序中,除非"意外""删除""确定"也设置为 TRUE。
DockDevice
指定设备是否是停靠外围设备。
UniqueID
指定设备的实例 ID 在系统范围内是否唯一。 如果实例 ID 仅在总线范围内是唯一的,则此位是明确的。 有关详细信息,请参阅 设备标识字符串。
SilentInstall
指定是否设备管理器所有安装对话框;必需对话框除外,例如"找不到兼容的驱动程序"。
RawDeviceOK
指定如果没有功能驱动程序,基础总线的驱动程序是否可以驱动设备 (例如,在传递模式下的 SCSI) 。 此操作模式称为 原始模式。
SurpriseRemovalOK
指定设备的函数驱动程序是否可以处理设备被删除的情况,然后Windows设备IRP_MN_QUERY_REMOVE_DEVICE设备。 如果 "SurpriseRemovalOK "设置为 TRUE,则无论设备驱动程序的状态如何,都可以安全地从其直接父级中删除设备。
例如,标准 USB 鼠标不会在其硬件中保持任何状态,因此随时都可以安全删除。 但是,如果不先让驱动程序将其缓存刷新到硬件,则不能安全地删除其驱动程序缓存在内存中写入的外部硬盘。
WakeFromD0
指定设备是否可以在 D0 状态时响应外部唤醒信号。 驱动程序不应更改此值。
WakeFromD1
指定设备是否可以在 D1 状态时响应外部唤醒信号。 驱动程序不应更改此值。
WakeFromD2
指定设备是否可以在 D2 状态时响应外部唤醒信号。 驱动程序不应更改此值。
WakeFromD3
指定设备是否可以在 D3 状态时响应外部唤醒信号。 驱动程序不应更改此值。
HardwareDisabled
设置后,此标志指定禁用设备的硬件。
设备父总线驱动程序或总线筛选器驱动程序在此类驱动程序确定禁用设备硬件时设置此标志。
PnP 管理器在 IRP_MN_QUERY_CAPABILITIES后立即 发送一个 IRP,在设备启动后发送另一个 IRP。 PnP 管理器仅在枚举设备后检查此位。 设备启动后,将忽略此位。
NonDynamic
留待将来使用。
WarmEjectSupported
留待将来使用。
NoDisplayInUI
请勿在用户界面中显示设备。 如果设置了此位,则即使设备存在但无法启动,设备也永远不会显示在用户界面中。 只有总线驱动程序和关联的总线筛选器驱动程序应设置此位。 (另请参阅 PNP_DEVICE_DONT_DISPLAY_IN_UI structure.PNP_DEVICE_STATE 中的 )
Reserved1
预留给系统使用。
WakeFromInterrupt
指示驱动程序或 ACPI 是否负责处理唤醒事件。 如果已设置,驱动程序将负责处理唤醒事件。 ACPI 在接收 IRP IRP_MN_WAIT_WAKE设备,但不连接中断时,请完成 IRP 以通知设备堆栈唤醒事件。
SecureDevice
指示设备是否是安全设备。
ChildOfVgaEnabledBridge
对于 VGA 设备,指示父桥是否设置了 VGA 解码位。
DecodeIoOnBoot
确定设备在启动时是否启用了 IO 解码。
Reserved
预留给系统使用。
Address
指定一个地址,该地址指示设备在其基础总线上的位置。
此数字的解释是特定于总线的。 如果地址未知或总线驱动程序不支持地址,则总线驱动程序将此成员保留为默认值 0xFFFFFFFF。
以下列表描述了某些总线驱动程序在子设备的" 地址 "字段中存储的信息:
1394
不提供地址,因为地址是可变的。 默认为 0xFFFFFFFF。
EISA
槽号 (0-F) 。
IDE
对于 IDE 设备,地址包含目标 ID 和 LUN。 对于 IDE 通道,地址为 0 或 1 (0 = 主通道,1 = 辅助) 。
ISApnp
不提供地址。 默认为 0xFFFFFFFF。
PCMCIA (PC 卡)
套接字编号 (或0x00 0x40) 。
PCI
高单词中的设备编号和低单词中的函数号。
SCSI
目标 ID。
USB
端口号。
UINumber
指定一个与设备关联的数字,该数字可在用户界面中显示。
此数字通常是用户感知的槽号,例如,在板上的槽旁边打印的编号,或使用户更轻松地查找物理设备的其他数字。 对于没有此类约定的总线,或者 当 UINumber 未知时,总线驱动程序将此成员保留为其默认值 0xFFFFFFFF。
DeviceState
一个 值数组,指示设备可以针对每个系统电源状态维护的最电源设备电源状态。 数组的 DeviceState[PowerSystemWorking] 元素对应于 S0 系统状态。 PowerSystemUnspecified 的条目保留供系统使用。
此数组中的条目基于父 devnode 的功能。 通常,驱动程序不应更改这些值。 但是,如有必要,驱动程序可以将值从 PowerDeviceD1 降低至 PowerDeviceD2。
如果总线驱动程序无法确定根枚举设备的适当设备电源状态,它会将 DeviceState[PowerSystemWorking] 设置到 PowerDeviceD0 ,将所有其他条目都设置到 PowerDeviceD3。
SystemWake
指定设备可用于向唤醒事件发出信号的最小系统电源状态。 值 PowerSystemUnspecified 指示设备无法唤醒系统。
总线驱动程序可以从其父 devnode 获取此信息。
通常,驱动程序不应更改此值。 但是,如有必要,驱动程序可以从 PowerSystemHibernate 到 PowerSystemS1,以指示其设备无法将系统从休眠状态唤醒,但可以从较高的休眠状态唤醒。
DeviceWake
指定设备可用于向唤醒事件发出信号的最小设备电源状态。 值 PowerDeviceUnspecified 指示设备无法对唤醒事件发出信号。
D1Latency
以100微秒为单位指定设备的近似最坏情况延迟,以将设备从PowerDeviceD1状态返回到PowerDeviceD0状态。 如果设备不支持 D1 状态,则设置为零。
D2Latency
以100微秒为单位指定设备的近似最坏情况延迟,以将设备从PowerDeviceD2状态返回到PowerDeviceD0状态。 如果设备不支持 D2 状态,则设置为零。
D3Latency
以100微秒为单位指定设备的近似最坏情况延迟,以将设备从PowerDeviceD3状态返回到PowerDeviceD0状态。 如果设备不支持 D3 状态,则设置为零。
注解
总线驱动程序在此结构中设置适当的值,以响应 IRP_MN_QUERY_CAPABILITIES IRP。 总线筛选器驱动程序、函数驱动程序和筛选器驱动程序可能会改变总线驱动程序设置的功能。
发送 IRP_MN_QUERY_CAPABILITIES 请求的驱动程序必须先初始化此结构的 大小、 版本、 地址和 UINumber 成员,然后才能发送 IRP。
有关使用 DEVICE_CAPABILITIES 结构描述设备的电源功能的详细信息,请参阅 报表设备电源功能。
要求
标头 | wdm (包括 Wdm、Ntddk、Ntifs) |
请参阅
反馈
提交和查看相关反馈