设备信息属性
每个设备均有关联的 DeviceInformation 属性;当需要特定信息或生成设备选择器时,可使用这些属性。 高级查询语法 (AQS) 筛选器可用于指定这些属性,并限制具有指定特征的枚举设备。 此外,还可使用这些属性来指示要为每个设备返回的信息。 这样,便可指定返回到应用程序的设备信息。
重要的 API
有关在设备选择器中使用 DeviceInformation 属性的详细信息,请参阅生成设备选择器。 本主题演示如何请求信息属性,并介绍了某些通用属性。
DeviceInformation 对象由标识 (DeviceInformation.Id)、种类 (DeviceInformation.Kind) 和属性包 (DeviceInformation.Properties) 组成。 DeviceInformation 对象的其他所有属性均派生自 Properties 属性包。 例如,Name 派生自 System.ItemNameDisplay。 这意味着,该属性包始终包含用于确定其他属性所需的信息。
请求属性
DeviceInformation 对象具有某些基本属性,例如 Id 和 Kind,但大多数属性会存储在 Properties 下的属性包中。 因此,该属性包包含用于从属性包确定这些属性的来源的属性。 例如,使用 System.ItemNameDisplay 可确定 Name 属性的来源。 这是具有用户友好名称的一个通用且常见属性的情况。 Windows 提供若干用户友好名称,以便更轻松地查询属性。
请求属性时,其范围不限于具有用户友好名称的通用属性。 可指定基础 GUID 和属性 ID (PID) 以请求任意可用的属性,甚至还可请求单个设备或驱动程序所提供的自定义属性。 指定自定义属性的格式为“{GUID} PID
”。 例如:“{744e3bed-3684-4e16-9f8a-07953a8bf2ab} 7
”。
注意
可以在设备驱动程序的设备属性键头文件中找到属性 GUID 的列表。
某些属性在所有 DeviceInformationKind 对象中通用,但大多数属性均仅适用于特定种类。 以下各节列出了按单个 DeviceInformationKind 排序的部分通用属性。 有关不同种类如何相互关联的详细信息,请参阅 DeviceInformationKind。
DeviceInterface 属性
DeviceInterface 是应用场景中使用的默认且最常见的 DeviceInformationKind 对象。 除非设备 API 指示了不同的特定 DeviceInformationKind,否则应使用此类对象。
名称 | Type | 描述 |
---|---|---|
System.Devices.ContainerId | GUID | 包含 Device(包含此 DeviceInterface)的 DeviceInformationKind.DeviceContainer 的标识。 可将此值连同 DeviceInformationKind.DeviceContainer 传递给 CreateFromIdAsync,从而查找相应的容器。 |
System.Devices.InterfaceClassGuid | GUID | 此接口表示的接口类 GUID。 |
System.Devices.DeviceInstanceId | 字符串 | 父级 DeviceInformationKind.Device 的标识。 可将此值连同 DeviceInformationKind.Device 传递给 CreateFromIdAsync,从而查找相应的设备。 |
System.Devices.InterfaceEnabled | 布尔 | 指示此接口是否已启用。 DeviceInformation.IsEnabled 派生自此属性。 |
System.Devices.GlyphIcon | 字符串 | 标志符号的图标路径。 |
System.Devices.IsDefault | 布尔 | 指示它是否为 System.Devices.InterfaceClassGuid 的默认设备。 它主要用于打印机。 它不适用于音频,因为存在多个音频默认值。 使用 GetDefaultAudioRenderId 或 GetDefaultAudioCaptureId 可获取音频默认值。 |
System.Devices.Icon | 字符串 | 图标路径。 |
System.ItemNameDisplay | 字符串 | 设备对象的最佳显示名称。 |
设备属性
名称 | Type | 描述 |
---|---|---|
System.Devices.ClassGuid | GUID | 设备安装期间使用的设备类。 有关详细信息,请参阅设备设置类。 |
System.Devices.CompatibleIds | string[] | 此设备的兼容 ID。 当 Windows 确定要在设备上安装的最佳驱动程序时,会使用这些 ID。 有关详细信息,请参阅兼容 ID。 |
System.Devices.ContainerId | GUID | 包含此设备的 DeviceInformationKind.DeviceContainer 的标识。 可将此值连同 DeviceInformationKind.DeviceContainer 传递给 CreateFromIdAsync,从而查找相应的容器。 |
System.Devices.DeviceCapabilities | UInt32 | CfgMgr32.h 中定义的 CM_DEVCAP_X 功能标志的按位 OR。 有关详细信息,请参阅 DEVPKEY_Device_Capabilities。 |
System.Devices.DeviceHasProblem | 布尔 | 此设备当前出现问题,且可能无法正常工作。 这可能源于驱动程序已过时、缺失或无效。 |
System.Devices.DeviceInstanceId | 字符串 | 此设备的标识。 它同时还是 DeviceInformation.Id 的值。 |
System.Devices.DeviceManufacturer | 字符串 | 设备制造商。 |
System.Devices.HardwareIds | string[] | 此设备的硬件 ID。 Windows 在确定要安装的最佳驱动程序时会使用这些 ID。 设备供应商可使用此属性以便通过其应用来标识其设备。 有关详细信息,请参阅硬件 ID。 |
System.Devices.Parent | 字符串 | 父设备的 DeviceInformation.Id。 它为连接父项,而不是 DeviceContainer 父项。 |
System.Devices.Present | 布尔 | 指示此设备当前是否存在且可用。 |
System.ItemNameDisplay | 字符串 | 此设备对象的最佳显示名称。 在本例中,它不一定是用户的最佳名称。 通过引用关联 DeviceContainer 或 DeviceInterface 的 System.ItemNameDisplay,可找到更有可能的用户友好名称候选项。 |
DeviceContainer 属性
名称 | Type | 描述 |
---|---|---|
System.Devices.Category | string[] | 此设备所属类别的说明列表。 此列表会以单一类别的形式提供。 例如,“显示器”、“电话”或“音频设备”。 |
System.Devices.CategoryIds | string[] | 包含此设备所属类别的列表。 例如,Audio.Headphone、Display.Monitor 或 Input.Gaming。 |
System.Devices.CategoryPlural | string[] | 此设备所属类别的说明列表。 此列表会以多个类别的形式提供。 例如,“显示器”、“电话”或“音频设备”。 |
System.Devices.CompatibleIds | string[] | 所有 DeviceInformationKind.Device 子对象的兼容 ID 的集合。 |
System.Devices.Connected | 布尔 | 指示此设备当前是否已连接到系统。 |
System.Devices.GlyphIcon | 字符串 | 标志符号的图标路径。 |
System.Devices.HardwareIds | string[] | 所有 DeviceInformationKind.Device 子对象的硬件 ID 的集合。 |
System.Devices.Icon | 字符串 | 图标路径。 |
System.Devices.LocalMachine | 布尔 | 如果此 DeviceContainer 表示系统自身,则为 True;如果此设备在系统外部,则为 false。 |
System.Devices.Manufacturer | 字符串 | 设备制造商。 |
System.Devices.ModelName | 字符串 | 设备容器的型号名称。 |
System.Devices.Paired | 布尔 | 指示任意 DeviceInformationKind.Device 子对象均为当前与系统配对的无线设备或网络设备。 |
System.ItemNameDisplay | 字符串 | 此设备的最佳显示名称。 |
DeviceInterfaceClass 属性
名称 | Type | 描述 |
---|---|---|
System.ItemNameDisplay | 字符串 | 此设备的最佳显示名称。 |
DevicePanel 属性
名称 | Type | 描述 |
---|---|---|
System.Devices.Panel.PanelId | 字符串 | DevicePanel 对象的标识符。 |
System.Devices.Panel.PanelGroup | 字符串 | 父 PanelGroup 的标识符。 |
AssociationEndpoint 属性
名称 | Type | 描述 |
---|---|---|
System.Devices.Aep.AepId | 字符串 | 此设备的标识。 它同时还是 DeviceInformation.Id 的值。 |
System.Devices.Aep.CanPair | 布尔 | 指示此设备能否与系统配对。 DeviceInformationPairing.CanPair 派生自此属性。 |
System.Devices.Aep.Category | string[] | 此设备所属的类别。 例如,打印机或相机。 |
System.Devices.Aep.ContainerId | GUID | AssociationEndpointContainer 父对象的 ID。 |
System.Devices.Aep.DeviceAddress | 字符串 | 此设备的地址。 如果此设备为网络设备,则它为 IP 地址。 |
System.Devices.Aep.IsConnected | 布尔 | 指示此设备当前是否已连接到系统。 |
System.Devices.Aep.IsPaired | 布尔 | 指示此设备当前是否已配对。 DeviceInformationPairing.IsPaired 派生自此属性。 |
System.Devices.Aep.IsPresent | 布尔 | 指示此设备当前是否存在;即,此设备实时存在,并可通过网络或无线协议发现。 将设备与系统配对后,便会缓存该设备。 此后,查询是否存在 AssociationEndpoint 对象时会自动发现该设备。 因此,不能只依赖使用查询来发现此设备,从而指示它当前是否可用。 这便是此属性为何很重要的原因。 |
System.Devices.Aep.Manufacturer | 字符串 | 设备制造商。 |
System.Devices.Aep.ModelId | GUID | 此设备的型号 ID。 |
System.Devices.Aep.ModelName | 字符串 | 此设备的型号名称。 |
System.Devices.Aep.ProtocolId | GUID | 指示用于发现此 AssocationEndpoint 设备的协议。 |
System.Devices.Aep.SignalStrength | Int32 | 此设备的信号强度。 此属性仅适用于某些协议。 |
System.ItemNameDisplay | 字符串 | 此设备的最佳显示名称。 |
AssociationEndpointContainer 属性
名称 | Type | 描述 |
---|---|---|
System.Devices.AepContainer.Categories | string[] | 此设备所属的类别。 例如,打印机或相机。 |
System.Devices.AepContainer.Children | string[] | 属于此容器的 AssocationEndpoint 对象的 ID 集合。 |
System.Devices.AepContainer.CanPair | 布尔 | 指示是否可将其中一个 AssociationEndpoint 子设备与系统进行配对。 DeviceInformationPairing.CanPair 派生自此属性。 |
System.Devices.AepContainer.ContainerId | GUID | 此设备的标识。 它同时还是 DeviceInformation.Id 的值,但会采用 GUID 形式。 |
System.Devices.AepContainer.IsPaired | 布尔 | 指示当前是否已配对其中一个 AssociationEndpoint 子设备。 DeviceInformationPairing.IsPaired 派生自此属性。 |
System.Devices.AepContainer.IsPresent | 布尔 | 指示其中一个 AssociationEndpoint 子设备当前是否存在;即,此设备实时存在,且可通过网络或无线协议来发现。 将设备与系统配对后,便会缓存该设备。 此后,查询是否存在 AssociationEndpoint 对象时会自动发现该设备。 因此,不能只依赖使用查询来发现此设备,从而指示它当前是否可用。 这便是此属性为何很重要的原因。 |
System.Devices.AepContainer.Manufacturer | 字符串 | 设备制造商。 |
System.Devices.AepContainer.ModelIds | string[] | 此设备的型号 ID 列表。 每个型号均为字符串形式的 GUID。 |
System.Devices.AepContainer.ModelName | 字符串 | 此设备的型号名称。 |
System.Devices.AepContainer.ProtocolIds | GUID[] | 有助于生成此 AssociationEndpointContainer 对象的协议 ID 的列表。 请记住,通过收集通过针对同一物理设备的不同协议所发现的所有 AssociationEndpoint 设备,可创建 AssociationEndpointContainer 设备。 |
System.Devices.AepContainer.SupportedUriSchemes | string[] | 此设备所支持强制转换 URI 方案的列表。 |
System.Devices.AepContainer.SupportsAudio | 布尔 | 指示此设备是否支持音频转换。 |
System.Devices.AepContainer.SupportsImages | 布尔 | 指示此设备是否支持图像转换。 |
System.Devices.AepContainer.SupportsVideo | 布尔 | 指示此设备是否支持视频转换。 |
System.ItemNameDisplay | 字符串 | 此设备的最佳显示名称。 |
AssociationEndpointService 属性
名称 | Type | 描述 |
---|---|---|
System.Devices.AepService.AepId | 字符串 | AssociationEndpoint 父对象的标识符。 |
System.Devices.AepService.ContainerId | GUID | AssociationEndpointContainer 父对象的标识符。 |
System.Devices.AepService.ParentAepIsPaired | 布尔 | 指示 AssociationEndpoint 父对象是否已与系统配对。 |
System.Devices.AepService.ProtocolId | GUID | 用于发现此设备的协议的标识。 |
System.Devices.AepService.ServiceClassId | GUID | 此设备所表示服务的标识。 |
System.Devices.AepService.ServiceId | 字符串 | 此服务的标识。 它同时还是 DeviceInformation.Id 的值。 |
System.ItemNameDisplay | 字符串 | 此服务的最佳显示名称。 |