裝置資訊屬性
每個裝置都有關聯的 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。
名稱 | 類型 | 描述 |
---|---|---|
System.Devices.ContainerId | GUID | 包含具有此 DeviceInterface 之裝置的 DeviceInformationKind.DeviceContainer 的身分識別。 您可以將此值與 DeviceInformationKind.DeviceContainer 一起傳遞給 CreateFromIdAsync,以尋找適當的容器。 |
System.Devices.InterfaceClassGuid | GUID | 此介面代表的介面類別 GUID。 |
System.Devices.DeviceInstanceId | String | 父 DeviceInformationKind.Device 的身分識別。 您可以將此值與 DeviceInformationKind.Device 一起傳遞給 CreateFromIdAsync,以尋找適當的裝置。 |
System.Devices.InterfaceEnabled | 布林值 | 指示介面是否啟用。 DeviceInformation.IsEnabled 衍生自此屬性。 |
System.Devices.GlyphIcon | String | 字符的圖示路徑。 |
System.Devices.IsDefault | 布林值 | 指示這是否是 System.Devices.InterfaceClassGuid 的預設裝置。 這主要用於印表機。 這不適用於音訊,因為有多個音訊預設值。 使用 GetDefaultAudioRenderId 或 GetDefaultAudioCaptureId 取得音訊預設值。 |
System.Devices.Icon | String | 圖示路徑。 |
System.ItemNameDisplay | String | 裝置物件的最佳顯示名稱。 |
裝置屬性
名稱 | 類型 | 描述 |
---|---|---|
System.Devices.ClassGuid | GUID | 裝置安裝期間使用的裝置類別。 如需詳細資訊,請參閱裝置設定類別。 |
System.Devices.CompatibleIds | String[] | 裝置的相容識別碼。 當 Windows 確定要在裝置上安裝的最佳驅動程式時,將使用這些驅動程式。 如需詳細資訊,請參閱相容識別碼。 |
System.Devices.ContainerId | GUID | 包含此裝置的 DeviceInformationKind.DeviceContainer 的身分識別。 您可以將此值與 DeviceInformationKind.DeviceContainer 一起傳遞給 CreateFromIdAsync,以尋找適當的容器。 |
System.Devices.DeviceCapabilities | UInt32 | CM_DEVCAP_X 功能旗標的 bitwise-OR,在 CfgMgr32.h 中定義。 如需詳細資訊,請參閱 DEVPKEY_Device_Capabilities。 |
System.Devices.DeviceHasProblem | 布林值 | 該裝置目前存在問題,可能無法正常運作。 這可能是由於驅動程式過時、遺失或無效造成的。 |
System.Devices.DeviceInstanceId | String | 裝置的身分識別。 這也是 DeviceInformation.Id 的值。 |
System.Devices.DeviceManufacturer | String | 裝置的製造商。 |
System.Devices.HardwareIds | String[] | 裝置的硬體識別碼。 Windows 會在判斷要安裝的最佳驅動程式時使用這些識別碼。 裝置廠商可以使用此屬性,從其應用程式中識別其裝置。 如需詳細資訊,請參閱硬體識別碼。 |
System.Devices.Parent | String | 父裝置的 DeviceInformation.Id。 這是連線父系,而不是 DeviceContainer 父系。 |
System.Devices.Present | 布林值 | 指示裝置目前是否存在且可供使用。 |
System.ItemNameDisplay | String | 此裝置物件的最佳顯示名稱。 在這種情況下,這不一定是使用者的最佳名稱。 透過參考關聯的 DeviceContainer 或 DeviceInterface 的 System.ItemNameDisplay 可找到較有可能是最佳使用者易記名稱的候選名稱。 |
DeviceContainer 屬性
名稱 | 類型 | 描述 |
---|---|---|
System.Devices.Category | String[] | 裝置所屬類別的描述清單。 此清單會以單一類別的形式提供。 例如,「顯示器」、「電話」或「音訊裝置」。 |
System.Devices.CategoryIds | String[] | 包含該裝置所屬類別的清單。 例如 Audio.Headphone、Display.Monitor 或 Input.Gaming。 |
System.Devices.CategoryPlural | String[] | 裝置所屬類別的描述清單。 此清單會以複數類別的形式提供。 例如,「顯示器」、「電話」或「音訊裝置」。 |
System.Devices.CompatibleIds | String[] | 所有子 DeviceInformationKind.Device 物件的相容識別碼集合。 |
System.Devices.Connected | 布林值 | 指示裝置目前是否連線到系統。 |
System.Devices.GlyphIcon | String | 字符的圖示路徑。 |
System.Devices.HardwareIds | String[] | 所有子 DeviceInformationKind.Device 物件的硬體識別碼集合。 |
System.Devices.Icon | String | 圖示路徑。 |
System.Devices.LocalMachine | 布林值 | 如果此 DeviceContainer 代表系統本身,則為 True; 如果裝置位於系統外部,則為 False。 |
System.Devices.Manufacturer | String | 裝置的製造商。 |
System.Devices.ModelName | String | 裝置容器的型號名稱。 |
System.Devices.Paired | 布林值 | 指示任何子 DeviceInformationKind.Device 物件是否為目前與系統配對的無線或網路裝置。 |
System.ItemNameDisplay | String | 此裝置的最佳顯示名稱。 |
DeviceInterfaceClass 屬性
名稱 | 類型 | 描述 |
---|---|---|
System.ItemNameDisplay | String | 此裝置的最佳顯示名稱。 |
DevicePanel 屬性
名稱 | 類型 | 描述 |
---|---|---|
System.Devices.Panel.PanelId | String | DevicePanel 物件的識別碼。 |
System.Devices.Panel.PanelGroup | String | 父 PanelGroup 的識別碼。 |
AssociationEndpoint 屬性
名稱 | 類型 | 描述 |
---|---|---|
System.Devices.Aep.AepId | String | 此裝置的身分識別。 這也是 DeviceInformation.Id 的值。 |
System.Devices.Aep.CanPair | 布林值 | 指示裝置是否可以與系統配對。 DeviceInformationPairing.CanPair 衍生自此屬性。 |
System.Devices.Aep.Category | String[] | 裝置所屬的類別。 例如,印表機或相機。 |
System.Devices.Aep.ContainerId | GUID | 父 AssociationEndpointContainer 物件的識別碼。 |
System.Devices.Aep.DeviceAddress | String | 裝置的位址。 如果裝置是網路裝置,則此為 IP 位址。 |
System.Devices.Aep.IsConnected | 布林值 | 指示裝置目前是否已連線到系統。 |
System.Devices.Aep.IsPaired | 布林值 | 指示裝置目前是否已配對。 DeviceInformationPairing.IsPaired 衍生自此屬性。 |
System.Devices.Aep.IsPresent | 布林值 | 指示裝置目前是否存在,這代表該裝置處於使用狀態,並透過網路或無線通訊協定受到探索。 一旦裝置與系統配對,系統就會快取該裝置。 此後,在查詢 AssociationEndpoint 物件時,將自動探索該裝置。 因此,您不能僅依靠查詢來探索裝置,來指示它目前是否可用。 這就是為什麼這個屬性很重要的原因。 |
System.Devices.Aep.Manufacturer | String | 裝置的製造商。 |
System.Devices.Aep.ModelId | GUID | 裝置的型號識別碼。 |
System.Devices.Aep.ModelName | String | 裝置的型號名稱。 |
System.Devices.Aep.ProtocolId | GUID | 指示用於探索此 AssocationEndpoint 裝置的通訊協定。 |
System.Devices.Aep.SignalStrength | Int32 | 裝置的訊號強度。 此屬性僅適用於某些通訊協定。 |
System.ItemNameDisplay | String | 裝置的最佳顯示名稱。 |
AssociationEndpointContainer 屬性
名稱 | 類型 | 描述 |
---|---|---|
System.Devices.AepContainer.Categories | String[] | 裝置所屬的類別。 例如,印表機或相機。 |
System.Devices.AepContainer.Children | String[] | 屬於此容器的 AssocationEndpoint 物件的識別碼集合。 |
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 | String | 裝置的製造商。 |
System.Devices.AepContainer.ModelIds | String[] | 裝置的型號識別碼清單。 每個型號都是字串形式的 GUID。 |
System.Devices.AepContainer.ModelName | String | 裝置的型號名稱。 |
System.Devices.AepContainer.ProtocolIds | GUID[] | 有助於建置此 AssociationEndpointContainer 物件的通訊協定識別碼清單。 請記住,AssociationEndpointContainer 裝置是透過收集透過相同實體裝置的不同通訊協定找到的所有 AssociationEndpoint 裝置來建立的。 |
System.Devices.AepContainer.SupportedUriSchemes | String[] | 此裝置支援的投射 URI 配置清單。 |
System.Devices.AepContainer.SupportsAudio | 布林值 | 指示該裝置是否支援音訊投射。 |
System.Devices.AepContainer.SupportsImages | 布林值 | 指示該裝置是否支援影像投射。 |
System.Devices.AepContainer.SupportsVideo | 布林值 | 指示該裝置是否支援視訊投射。 |
System.ItemNameDisplay | String | 裝置的最佳顯示名稱。 |
AssociationEndpointService 屬性
名稱 | 類型 | 描述 |
---|---|---|
System.Devices.AepService.AepId | String | 父 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 | String | 此服務的身分識別。 這也是 DeviceInformation.Id 的值。 |
System.ItemNameDisplay | String | 服務的最佳顯示名稱。 |