Wyliczanie urządzeń za pośrednictwem sieci

Użyj interfejsów API Windows.Devices.Enumeration do wykrywania urządzeń za pośrednictwem protokołów bezprzewodowych i sieciowych.

Wyliczanie urządzeń za pośrednictwem protokołów sieciowych lub bezprzewodowych

Czasami należy wyliczyć urządzenia, które nie są podłączone lokalnie i można je odnaleźć tylko za pośrednictwem protokołów bezprzewodowych lub sieciowych. W tym celu interfejsy API Windows.Devices.Enumeration mają trzy różne rodzaje obiektów urządzeń: AssociationEndpoint (AEP), AssociationEndpointContainer (kontener AEP) oraz AssociationEndpointService (usługa AEP). Łącznie określa się je jako AEPs lub obiekty AEP.

Niektóre interfejsy API urządzeń udostępniają ciąg selektora, którego można użyć do wyliczenia dostępnych obiektów AEP. Może to obejmować zarówno urządzenia sparowane z systemem, jak i niesparowane. Niektóre urządzenia mogą nie wymagać parowania. Te interfejsy API urządzeń mogą próbować sparować urządzenie, jeśli jest to konieczne przed rozpoczęciem interakcji z nim. Wi-Fi Direct to przykład interfejsów API, które są zgodne z tym wzorcem. Jeśli te interfejsy API urządzeń nie powodują automatycznie sparowania urządzenia, możesz sparować je przy użyciu obiektu DeviceInformationPairing dostępnego z poziomu DeviceInformation.Pairing.

Jednak mogą wystąpić przypadki ręcznego odnajdywania urządzeń samodzielnie bez użycia wstępnie zdefiniowanego ciągu selektora. Na przykład może być konieczne zebranie informacji o urządzeniach AEP bez interakcji z nimi lub znalezienie większej liczby obiektów AEP niż zostanie odnalezionych przy użyciu wstępnie zdefiniowanego ciągu selektora. W takim przypadku utworzysz własny ciąg selektora i użyjesz go zgodnie z instrukcjami w obszarze Kompilowanie selektora urządzenia.

Podczas tworzenia własnego selektora zdecydowanie zaleca się ograniczenie zakresu wyliczania do protokołów, które Cię interesują. Na przykład nie chcesz, aby moduł Wi‑Fi wyszukiwał urządzenia Wi‑Fi Direct, jeśli szczególnie interesują Cię urządzenia UPnP. Windows zdefiniował tożsamość dla każdego protokołu, którego można użyć do określenia zakresu wyliczenia. W poniższej tabeli wymieniono typy protokołów i identyfikatory.

Typ protokołu lub urządzenia sieciowego Id
UPnP (w tym DIAL i DLNA) {0e261de4-12f0-46e6-91ba-428607ccef64}
Usługi sieci Web na urządzeniach (WSD) {782232aaa-a2f9-4993-971b-aedc551346b0}
Wi-Fi Bezpośredni {0407d24e-53de-4c9a-9ba1-9ced54641188}
Odnajdywanie usługi DNS (DNS-SD) {4526e8c1-8aac-4153-9b16-55e86ada0e54}
Punkt usługi {d4bf61b3-442e-4ada-882d-fa7B70c832d9}
Drukarki sieciowe (drukarki Active Directory) {37aba761-2124-454c-8d82-c42962c2de2b}
Windows połącz teraz (WNC) {4c1b1ef8-2f62-4b9f-9bc5-b21ab636138f}
Stacje dokujące WiGig {a277f3a5-8764-4f88-8045-4c5e962640b1}
Konfiguracja sieci Wi‑Fi dla drukarek HP {c85ef710-f344-4792-bb6d-85a4346f1e69}
Bluetooth {e0cbf06c-cd8b-4647-bb8a-263b43f0f974}
Bluetooth LE {bb7bb05e-5972-42b5-94fc-76eaa7084d49}
Kamera sieciowa {b8238652-b500-41eb-b4f3-4234f7f5ae99}

Przykłady zaawansowanej składni zapytań (AQS)

Każdy rodzaj protokołu AEP ma właściwość, której można użyć, aby ograniczyć wyliczanie do określonego protokołu. Pamiętaj, że możesz użyć operatora OR w filtrze AQS, aby połączyć wiele protokołów. Poniżej przedstawiono kilka przykładów ciągów filtrów AQS, które pokazują, jak wykonywać zapytania dotyczące urządzeń AEP.

To zapytanie AQS wyszukuje wszystkie obiekty UPnP AssociationEndpoint, gdy parametr DeviceInformationKind ma wartość AsssociationEndpoint.

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

To zapytanie AQS wyszukuje wszystkie obiekty UPnP i WSD AssociationEndpoint, gdy element DeviceInformationKind ma wartość AsssociationEndpoint.

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

To zapytanie AQS dotyczy wszystkich obiektów UPnP AssociationEndpointService jeśli DeviceInformationKind jest ustawiona na AssociationEndpointService.

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

To zapytanie AQS wyszukuje obiekty AssociationEndpointContainer, gdy parametr DeviceInformationKind jest ustawiony na AssociationEndpointContainer, ale znajduje je tylko przez enumerację przy użyciu protokołu UPnP. Zazwyczaj nie byłoby przydatne wyliczanie kontenerów, które pochodzą tylko z jednego protokołu. Może to być jednak przydatne, jeśli ograniczysz swój filtr do protokołów, w których można wykryć Twoje urządzenie.

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