Поделиться через


Перечисление устройств через сеть

Используйте API Windows.Devices.Enumeration для перечисления устройств через беспроводные и сетевые протоколы.

Важные API

Перечисление устройств через сетевые или беспроводные протоколы

Иногда необходимо перечислить устройства, которые не подключены локально, и их можно обнаружить только через беспроводные или сетевые протоколы. Для этого API Windows.Devices.Enumeration имеют три различных типа объектов устройств: AssociationEndpoint (AEP), AssociationEndpoint (AEP), AssociationEndpointContainer (контейнер AEP) и AssociationEndpointService (служба AEP). В качестве группы они называются объектами AEPs или AEP.

Некоторые API устройства предоставляют строку селектора, которую можно использовать для перечисления через доступные объекты AEP. Это может включать оба устройства, которые связаны и не связаны с системой. Некоторые устройства могут не требовать связывания. Эти API устройства могут попытаться связать устройство, если необходимо связать его перед взаимодействием с ним. Wi-Fi Direct — это пример API, которые соответствуют этому шаблону. Если эти API устройства не объединяют устройство автоматически, его можно связать с помощью объекта DeviceInformationPairing, доступного из DeviceInformation.Pairing.

Однако могут возникнуть случаи, когда вы хотите вручную обнаруживать устройства самостоятельно без использования предварительно определенной строки селектора. Например, вам может потребоваться только собрать сведения об устройствах AEP без взаимодействия с ними или вам может потребоваться найти больше объектов AEP, чем будет обнаружено с предварительно определенной строкой селектора. В этом случае вы создадите собственную строку селектора и используйте ее, следуя инструкциям в разделе "Сборка селектора устройства".

При создании собственного селектора настоятельно рекомендуется ограничить область перечисления интересующими вас протоколами. Например, вы не хотите, чтобы радио-поиск Wi-Fi для устройств Wi-Fi Direct, если вы особенно заинтересованы в устройствах UPnP. Windows определил удостоверение для каждого протокола, который можно использовать для области перечисления. В следующей таблице перечислены типы и идентификаторы протокола.

Тип протокола или сетевого устройства Артикул
UPnP (включая DIAL и DLNA) {0e261de4-12f0-46e6-91ba-428607ccef64}
Веб-службы на устройствах (WSD) {782232aa-a2f9-4993-971b-aedc551346b0}
Wi-Fi Direct {0407d24e-53de-4c9a-9ba1-9ced54641188}
Обнаружение служб DNS (DNS-SD) {4526e8c1-8aac-4153-9b16-55e86ada0e54}
Точка обслуживания {d4bf61b3-442e-4ada-882d-fa7B70c832d9}
Сетевые принтеры (принтеры Active Directory) {37aba761-2124-454c-8d82-c42962c2de2b}
Windows connect now (WNC) {4c1b1ef8-2f62-4b9f-9bc5-b21ab636138f}
Доки WiGig {a277f3a5-8764-4f88-8045-4c5e962640b1}
Подготовка Wi-Fi для принтеров HP {c85ef710-f344-4792-bb6d-85a4346f1e69}
Bluetooth {e0cbf06c-cd8b-4647-bb8a-263b43f0f974}
Bluetooth LE {bb7bb05e-5972-42b5-94fc-76eaa7084d49}
Сетевая камера {b8238652-b500-41eb-b4f3-4234f7f5ae99}

Примеры расширенного синтаксиса запросов (AQS)

Каждый тип AEP имеет свойство, которое можно использовать для ограничения перечисления определенным протоколом. Помните, что оператор OR можно использовать в фильтре AQS для объединения нескольких протоколов. Ниже приведены некоторые примеры строк фильтра AQS, которые показывают, как запрашивать устройства AEP.

Этот AQS запрашивает все объекты UPnP AssociationEndpoint , если для DeviceInformationKind задано значение AsssociationEndpoint.

System.Devices.Aep.ProtocolId:="{0e261de4-12f0-46e6-91ba-428607ccef64}"

Этот AQS запрашивает все объекты UPnP и WSD AssociationEndpoint, если для DeviceInformationKind задано значение AsssociationEndpoint.

System.Devices.Aep.ProtocolId:="{782232aa-a2f9-4993-971b-aedc551346b0}" OR
System.Devices.Aep.ProtocolId:="{0e261de4-12f0-46e6-91ba-428607ccef64}"

Этот AQS запрашивает все объекты UPnP AssociationEndpointService, если deviceInformationKind имеет значение AssociationEndpointService.

System.Devices.AepService.ProtocolId:="{0e261de4-12f0-46e6-91ba-428607ccef64}"

Этот объект AQS запрашивает объекты AssociationEndpointContainer, если deviceInformationKind имеет значение AssociationEndpointContainer, но находит их только путем перечисления протокола UPnP. Как правило, не рекомендуется перечислять контейнеры, поступающие только из одного протокола. Однако это может быть полезно, ограничив фильтр протоколами, в которых можно обнаружить устройство.

System.Devices.AepContainer.ProtocolIds:~~"{0e261de4-12f0-46e6-91ba-428607ccef64}"