Enumerare i dispositivi in rete

Usare il Windows. Devices.Enumeration API per enumerare i dispositivi su protocolli wireless e di rete.

Enumerazione dei dispositivi tramite protocolli wireless o in rete

A volte è necessario enumerare i dispositivi non connessi localmente e che possono essere individuati solo tramite protocolli wireless o di rete. A tale scopo, le API Windows.Devices.Enumeration espongono tre diversi tipi di oggetti dispositivo: AssociationEndpoint (AEP), il AssociationEndpointContainer (contenitore AEP) e il AssociationEndpointService (servizio AEP). Nel complesso, questi sono indicati come AEP o oggetti AEP.

Alcune API del dispositivo forniscono una stringa del selettore che è possibile usare per enumerare gli oggetti AEP disponibili. Ciò può includere entrambi i dispositivi associati e non associati al sistema. Alcuni dispositivi potrebbero non richiedere l'associazione. Queste API del dispositivo possono tentare di associare il dispositivo se è necessario associarlo prima di interagire con esso. Wi-Fi Direct è un esempio di API che seguono questo modello. Se queste API del dispositivo non associano automaticamente il dispositivo, puoi associarlo usando l'oggetto DeviceInformationPairing disponibile da DeviceInformation.Pairing.

Tuttavia, possono verificarsi casi in cui si desidera individuare manualmente i dispositivi autonomamente senza usare una stringa del selettore predefinita. Ad esempio, potrebbe essere sufficiente raccogliere informazioni sui dispositivi AEP senza interagire con essi oppure è consigliabile trovare più oggetti AEP di quelli che verranno individuati con la stringa del selettore predefinita. In questo caso, si creerà una stringa del selettore personalizzata e la si userà seguendo le istruzioni in Compilare un selettore di dispositivo.

Quando si compila un selettore personalizzato, è consigliabile limitare l'ambito di enumerazione ai protocolli a cui si è interessati. Ad esempio, non si desidera fare in modo che la radio Wi‑Fi cerchi dispositivi Wi‑Fi Direct se si è particolarmente interessati ai dispositivi UPnP. Windows ha definito un'identità per ogni protocollo che è possibile usare per definire l'ambito dell'enumerazione. Nella tabella seguente sono elencati i tipi di protocollo e gli identificatori.

Protocollo o tipo di dispositivo di rete ID
UPnP (incluso DIAL e DLNA) {0e261de4-12f0-46e6-91ba-428607ccef64}
Servizi Web nei dispositivi (WSD) {782232aa-a2f9-4993-971b-aedc551346b0}
Wi-Fi Direct {0407d24e-53de-4c9a-9ba1-9ced54641188}
Individuazione del servizio DNS (DNS-SD) {4526e8c1-8aac-4153-9b16-55e86ada0e54}
Punto di servizio {d4bf61b3-442e-4ada-882d-fa7B70c832d9}
Stampanti di rete (stampanti di Active Directory) {37aba761-2124-454c-8d82-c42962c2de2b}
Windows Connect Now (WNC) {4c1b1ef8-2f62-4b9f-9bc5-b21ab636138f}
Dock WiGig {a277f3a5-8764-4f88-8045-4c5e962640b1}
Provisioning Wi‑Fi per stampanti HP {c85ef710-f344-4792-bb6d-85a4346f1e69}
Bluetooth {e0cbf06c-cd8b-4647-bb8a-263b43f0f974}
Bluetooth LE {bb7bb05e-5972-42b5-94fc-76eaa7084d49}
Fotocamera di rete {b8238652-b500-41eb-b4f3-4234f7f5ae99}

Esempi di sintassi di query avanzata (AQS)

Ogni tipo AEP ha una proprietà che è possibile usare per vincolare l'enumerazione a un protocollo specifico. Tenere presente che è possibile usare l'operatore OR in un filtro AQS per combinare più protocolli. Ecco alcuni esempi di stringhe di filtro AQS che illustrano come eseguire query per i dispositivi AEP.

Questa AQS esegue una query di tutti gli oggetti UPnP AssociationEndpoint quando DeviceInformationKind è impostato su AsssociationEndpoint.

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

Questa query AQS esegue una ricerca di tutti gli oggetti UPnP e WSD AssociationEndpoint quando DeviceInformationKind è impostato su AsssociationEndpoint.

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

Questa AQS interroga tutti gli oggetti UPnP AssociationEndpointService quando DeviceInformationKind è impostato su AsssociationEndpointService.

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

Questa query AQS interroga gli oggetti AssociationEndpointContainer quando la proprietà DeviceInformationKind è impostata su AssociationEndpointContainer, ma li individua solo enumerando il protocollo UPnP. In genere, non sarebbe utile enumerare i contenitori provenienti solo da un protocollo. Tuttavia, questo potrebbe essere utile limitando il filtro ai protocolli in cui è possibile individuare il dispositivo.

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