每個裝置都有關聯的 DeviceInformation 屬性,您可以在需要特定資訊或建置裝置選取器時使用這些屬性。 進階查詢語法 (AQS) 篩選器可用於指定這些屬性,並限制具有指定特徵的列舉裝置。 您也可以使用這些屬性來指示您想要為每個裝置傳回哪些資訊。 這可讓您指定傳回應用程式的裝置資訊。

重要 API

  • Windows.Devices.Enumeration
  • 有關在裝置選取器中使用 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 包含具有此 DeviceInterface 裝置 DeviceInformationKind.DeviceContainer 的身分識別。 您可以將此值與 DeviceInformationKind.DeviceContainer 一起傳遞給 CreateFromIdAsync ,以尋找適當的容器。 System.Devices.InterfaceClassGuid 此介面代表的介面類別 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.CompatibleIds String[] 裝置的相容識別碼。 當 Windows 確定要在裝置上安裝的最佳驅動程式時,將使用這些驅動程式。 如需詳細資訊,請參閱 相容識別碼 System.Devices.ContainerId 包含此裝置的 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 可找到較有可能是最佳使用者易記名稱的候選名稱。 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 此裝置的最佳顯示名稱。 System.Devices.Aep.IsPresent 指示裝置目前是否存在,這代表該裝置處於使用狀態,並透過網路或無線通訊協定受到探索。 一旦裝置與系統配對,系統就會快取該裝置。 此後,在查詢 AssociationEndpoint 物件時,將自動探索該裝置。 因此,您不能僅依靠查詢來探索裝置,來指示它目前是否可用。 這就是為什麼這個屬性很重要的原因。 System.Devices.Aep.Manufacturer String 裝置的製造商。 System.Devices.Aep.ModelId 裝置的型號識別碼。 System.Devices.Aep.ModelName String 裝置的型號名稱。 System.Devices.Aep.ProtocolId 指示用於探索此 AssocationEndpoint 裝置的通訊協定。 System.Devices.Aep.SignalStrength Int32 裝置的訊號強度。 此屬性僅適用於某些通訊協定。 System.ItemNameDisplay String 裝置的最佳顯示名稱。 System.Devices.AepContainer.CanPair 指示其中一個子 AssociationEndpoint 裝置是否可以與系統配對。 DeviceInformationPairing.CanPair 衍生自此屬性。 System.Devices.AepContainer.ContainerId 此裝置的身分識別。 這也是 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 裝置的最佳顯示名稱。