设备信息属性

每个设备均有关联的 DeviceInformation 属性;当需要特定信息或生成设备选择器时,可使用这些属性。 高级查询语法 (AQS) 筛选器可用于指定这些属性,并限制具有指定特征的枚举设备。 此外,还可使用这些属性来指示要为每个设备返回的信息。 这样,便可指定返回到应用程序的设备信息。

重要的 API

有关在设备选择器中使用 DeviceInformation 属性的详细信息,请参阅生成设备选择器。 本主题演示如何请求信息属性,并介绍了某些通用属性。

DeviceInformation 对象由标识 (DeviceInformation.Id)、种类 (DeviceInformation.Kind) 和属性包 (DeviceInformation.Properties) 组成。 DeviceInformation 对象的其他所有属性均派生自 Properties 属性包。 例如,Name 派生自 System.ItemNameDisplay。 这意味着,该属性包始终包含用于确定其他属性所需的信息。

请求属性

DeviceInformation 对象具有某些基本属性,例如 IdKind,但大多数属性会存储在 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 的默认设备。 它主要用于打印机。 它不适用于音频,因为存在多个音频默认值。 使用 GetDefaultAudioRenderIdGetDefaultAudioCaptureId 可获取音频默认值。
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 字符串 此设备对象的最佳显示名称。 在本例中,它不一定是用户的最佳名称。 通过引用关联 DeviceContainerDeviceInterfaceSystem.ItemNameDisplay,可找到更有可能的用户友好名称候选项。

 

DeviceContainer 属性

名称 Type 描述
System.Devices.Category string[] 此设备所属类别的说明列表。 此列表会以单一类别的形式提供。 例如,“显示器”、“电话”或“音频设备”。
System.Devices.CategoryIds string[] 包含此设备所属类别的列表。 例如,Audio.HeadphoneDisplay.MonitorInput.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 字符串 此服务的最佳显示名称。