Énumérer les appareils sur un réseau

Utilisez les API Windows.Devices.Enumeration pour énumérer les appareils via des protocoles sans fil et réseau.

API importantes

Énumération d’appareils via des protocoles réseau ou sans fil

Parfois, vous devez énumérer les appareils qui ne sont pas connectés localement et ne peuvent être découverts que sur un protocole sans fil ou réseau. Pour ce faire, les API Windows.Devices.Enumeration ont trois types d’objets d’appareil différents : AssociationEndpoint (AEP), AssociationEndpointContainer (conteneur AEP) et AssociationEndpointService (service AEP). En tant que groupe, il s’agit d’objets AEPs ou AEP.

Certaines API d’appareil fournissent une chaîne de sélecteur que vous pouvez utiliser pour énumérer les objets AEP disponibles. Cela peut inclure les deux appareils qui sont jumelés et qui ne sont pas associés au système. Certains des appareils peuvent ne pas nécessiter de jumelage. Ces API d’appareil peuvent tenter de coupler l’appareil si il est nécessaire avant d’interagir avec lui. Wi-Fi Direct est un exemple d’API qui suivent ce modèle. Si ces API d’appareil ne associent pas automatiquement l’appareil, vous pouvez l’associer à l’aide de l’objet DeviceInformationPairing disponible à partir de DeviceInformation.Pairing.

Toutefois, il peut arriver que vous souhaitiez détecter manuellement des appareils de votre propre manière sans utiliser de chaîne de sélecteur prédéfinie. Par exemple, vous devrez peut-être simplement collecter des informations sur les appareils AEP sans interagir avec eux ou vous souhaiterez peut-être trouver plus d’objets AEP que ce qui sera découvert avec la chaîne de sélecteur prédéfinie. Dans ce cas, vous allez générer votre propre chaîne de sélecteur et l’utiliser en suivant les instructions sous Générer un sélecteur d’appareil.

Lorsque vous générez votre propre sélecteur, il est fortement recommandé de limiter votre étendue d’énumération aux protocoles qui vous intéressent. Par exemple, vous ne souhaitez pas que la radio Wi-Fi recherche des appareils Wi-Fi Direct si vous êtes particulièrement intéressé par les appareils UPnP. Windows a défini une identité pour chaque protocole que vous pouvez utiliser pour étendre votre énumération. Le tableau suivant répertorie les types et identificateurs de protocole.

Type de protocole ou d’appareil réseau Id
UPnP (y compris DIAL et DLNA) {0e261de4-12f0-46e6-91ba-428607ccef64}
Services web sur les appareils (WSD) {782232aa-a2f9-4993-971b-aedc551346b0}
Wi-Fi Direct {0407d24e-53de-4c9a-9ba1-9ced54641188}
Découverte du service DNS (DNS-SD) {4526e8c1-8aac-4153-9b16-55e86ada0e54}
Point de service {d4bf61b3-442e-4ada-882d-fa7B70c832d9}
Imprimantes réseau (imprimantes Active Directory) {37aba761-2124-454c-8d82-c42962c2de2b}
Windows Connect now (WNC) {4c1b1ef8-2f62-4b9f-9bc5-b21ab636138f}
Docks WiGig {a277f3a5-8764-4f88-8045-4c5e962640b1}
Approvisionnement Wi-Fi pour les imprimantes HP {c85ef710-f344-4792-bb6d-85a4346f1e69}
Bluetooth {e0cbf06c-cd8b-4647-bb8a-263b43f0f974}
Bluetooth LE {bb7bb05e-5972-42b5-94fc-76eaa7084d49}
Caméra réseau {b8238652-b500-41eb-b4f3-4234f7f5ae99}

Exemples de syntaxe de requête avancée (AQS)

Chaque type AEP a une propriété que vous pouvez utiliser pour limiter votre énumération à un protocole spécifique. N’oubliez pas que vous pouvez utiliser l’opérateur OR dans un filtre AQS pour combiner plusieurs protocoles. Voici quelques exemples de chaînes de filtre AQS qui montrent comment interroger des appareils AEP.

Cet AQS interroge tous les objets UPnP AssociationEndpoint lorsque DeviceInformationKind est défini sur AsssociationEndpoint.

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

Cet AQS interroge tous les objets UPnP et WSD AssociationEndpoint lorsque DeviceInformationKind est défini sur AsssociationEndpoint.

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

Cette AQS interroge tous les objets UPnP AssociationEndpointService si DeviceInformationKind est défini sur AsssociationEndpointService.

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

Cet AQS interroge les objets AssociationEndpointContainer lorsque DeviceInformationKind est défini sur AssociationEndpointContainer, mais les trouve uniquement en énumérant le protocole UPnP. En règle générale, il n’est pas utile d’énumérer les conteneurs qui proviennent d’un seul protocole. Toutefois, cela peut être utile en limitant votre filtre aux protocoles où vous savez que votre appareil peut être découvert.

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