Enumerar dispositivos a través de una red

Use el Windows. Devices.Enumeration API para enumerar dispositivos a través de protocolos inalámbricos y en red.

Enumeración de dispositivos a través de protocolos inalámbricos o en red

A veces necesita enumerar dispositivos que no están conectados localmente y solo se pueden detectar a través de protocolos inalámbricos o de red. Para ello, las API de Windows.Devices.Enumeration tienen tres tipos diferentes de objetos de dispositivo: AssociationEndpoint (AEP), AssociationEndpointContainer (contenedor AEP) y AssociationEndpointService (servicio AEP). En conjunto, estos se denominan AEP o objetos AEP.

Algunas API de dispositivo proporcionan una cadena de selector que puede usar para enumerar a través de los objetos AEP disponibles. Esto podría incluir tanto los dispositivos emparejados con el sistema como los que no lo están. Es posible que algunos de los dispositivos no requieran emparejamiento. Esas API de dispositivo pueden intentar emparejar el dispositivo si es necesario emparejarlo antes de interactuar con él. Wi-Fi Direct es un ejemplo de LAS API que siguen este patrón. Si esas API de dispositivo no emparejan automáticamente el dispositivo, puede emparejarla mediante el objeto DeviceInformationPairing disponible en DeviceInformation.Pairing.

Sin embargo, puede haber casos en los que quiera detectar manualmente dispositivos por su cuenta sin usar una cadena de selector predefinida. Por ejemplo, puede que solo tenga que recopilar información sobre los dispositivos AEP sin interactuar con ellos o puede que desee encontrar más objetos AEP de los que se detectarán con la cadena de selector predefinida. En este caso, creará su propia cadena de selector y la usará siguiendo las instrucciones de Compilación de un selector de dispositivos.

Al crear su propio selector, se recomienda encarecidamente limitar el ámbito de enumeración a los protocolos que le interesen. Por ejemplo, no querrá que la radio Wi‑Fi busque dispositivos Wi‑Fi Direct si está especialmente interesado en dispositivos UPnP. Windows ha definido una identidad para cada protocolo que puede usar para definir el ámbito de la enumeración. En la tabla siguiente se enumeran los tipos de protocolo y los identificadores.

Tipo de dispositivo de red o protocolo Id
UPnP (incluido DIAL y DLNA) {0e261de4-12f0-46e6-91ba-428607ccef64}
Servicios web en dispositivos (WSD) {782232aa-a2f9-4993-971b-aedc551346b0}
Wi-Fi Direct {0407d24e-53de-4c9a-9ba1-9ced54641188}
Detección de servicios DNS (DNS-SD) {4526e8c1-8aac-4153-9b16-55e86ada0e54}
Punto de servicio {d4bf61b3-442e-4ada-882d-fa7B70c832d9}
Impresoras de red (impresoras de Active Directory) {37aba761-2124-454c-8d82-c42962c2de2b}
Windows conectar ahora (WNC) {4c1b1ef8-2f62-4b9f-9bc5-b21ab636138f}
Muelles WiGig {a277f3a5-8764-4f88-8045-4c5e962640b1}
Wi-Fi aprovisionamiento para impresoras HP {c85ef710-f344-4792-bb6d-85a4346f1e69}
Bluetooth {e0cbf06c-cd8b-4647-bb8a-263b43f0f974}
Bluetooth LE {bb7bb05e-5972-42b5-94fc-76eaa7084d49}
Cámara de red {b8238652-b500-41eb-b4f3-4234f7f5ae99}

Ejemplos de sintaxis de consulta avanzada (AQS)

Cada tipo de AEP tiene una propiedad que puede usar para restringir la enumeración a un protocolo específico. Tenga en cuenta que puede usar el operador OR en un filtro AQS para combinar varios protocolos. Estos son algunos ejemplos de cadenas de filtro de AQS que muestran cómo consultar dispositivos AEP.

Esta AQS consulta todos los objetos UPnP AssociationEndpoint cuando DeviceInformationKind se establece en AsssociationEndpoint.

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

Esta AQS consulta todos los objetos UPnP y WSD AssociationEndpoint cuando el DeviceInformationKind se establece en AsssociationEndpoint.

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

Esta AQS consulta todos los objetos UPnP AssociationEndpointService si el objeto DeviceInformationKind se establece en AssociationEndpointService.

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

Esta consulta AQS consulta objetos AssociationEndpointContainer cuando DeviceInformationKind se establece en AssociationEndpointContainer, pero solo los encuentra enumerando el protocolo UPnP. Normalmente, no sería útil enumerar contenedores que solo proceden de un protocolo. Sin embargo, esto puede ser útil limitando el filtro a los protocolos en los que sabe que se puede detectar el dispositivo.

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