Enumerar dispositivos em uma rede

Use o Windows. Devices.Enumeration APIs para enumerar dispositivos por protocolos sem fio e em rede.

APIs importantes

Enumerando dispositivos por protocolos em rede ou sem fio

Às vezes, você precisa enumerar dispositivos que não estão conectados localmente e só podem ser descobertos por meio de protocolos sem fio ou de rede. Para fazer isso, as APIs Windows.Devices.Enumeration têm três tipos diferentes de objetos de dispositivo: o AssociationEndpoint (AEP), o AssociationEndpointContainer (Contêiner AEP) e o AssociationEndpointService (Serviço AEP). Em conjunto, eles são chamados de AEPs ou objetos AEP.

Algumas APIs de dispositivo fornecem uma cadeia de caracteres de seletor que você pode usar para enumerar por meio dos objetos AEP disponíveis. Isso pode incluir dispositivos que estejam emparelhados ou não com o sistema. Alguns dos dispositivos podem não exigir emparelhamento. Essas APIs de dispositivo podem tentar emparelhar o dispositivo se o emparelhamento for necessário antes de interagir com ele. Wi-Fi Direct é um exemplo de APIs que seguem esse padrão. Se essas APIs de dispositivo não emparelharem automaticamente o dispositivo, você poderá emparelhá-lo usando o objeto DeviceInformationPairing disponível em DeviceInformation.Pairing.

No entanto, pode haver casos em que você deseja descobrir manualmente dispositivos por conta própria sem usar uma cadeia de caracteres de seletor predefinida. Por exemplo, talvez você precise apenas coletar informações sobre dispositivos AEP sem interagir com eles ou talvez queira encontrar mais objetos AEP do que será descoberto com a cadeia de caracteres de seletor predefinida. Nesse caso, você criará sua própria cadeia de caracteres de seletor e a usará seguindo as instruções em Criar um seletor de dispositivo.

Ao criar seu próprio seletor, é altamente recomendável limitar seu escopo de enumeração aos protocolos nos quais você está interessado. Por exemplo, você não quer fazer com que o rádio Wi‑Fi procure dispositivos Wi‑Fi Direct se estiver particularmente interessado em dispositivos UPnP. Windows definiu uma identidade para cada protocolo que você pode usar para definir o escopo de sua enumeração. A tabela a seguir lista os tipos de protocolo e os identificadores.

Tipo de dispositivo de rede ou protocolo Id
UPnP (incluindo DIAL e DLNA) {0e261de4-12f0-46e6-91ba-428607ccef64}
Serviços Web em dispositivos (WSD) {782232aa-a2f9-4993-971b-aedc551346b0}
Wi-Fi Direct {0407d24e-53de-4c9a-9ba1-9ced546411188}
Descoberta de serviço DNS (DNS-SD) {4526e8c1-8aac-4153-9b16-55e86ada0e54}
Ponto de serviço {d4bf61b3-442e-4ada-882d-fa7B70c832d9}
Impressoras de rede (impressoras do Active Directory) {37aba761-2124-454c-8d82-c42962c2de2b}
Windows conectar agora (WNC) {4c1b1ef8-2f62-4b9f-9bc5-b21ab636138f}
Docas do WiGig {a277f3a5-8764-4f88-8045-4c5e962640b1}
provisionamento Wi-Fi para impressoras HP {c85ef710-f344-4792-bb6d-85a4346f1e69}
Bluetooth {e0cbf06c-cd8b-4647-bb8a-263b43f0f974}
Bluetooth LE {bb7bb05e-5972-42b5-94fc-76eaa7084d49}
Câmera de Rede {b8238652-b500-41eb-b4f3-4234f7f5ae99}

Exemplos de sintaxe de consulta avançada (AQS)

Cada tipo de AEP tem uma propriedade que você pode usar para restringir sua enumeração a um protocolo específico. Tenha em mente que você pode usar o operador OR em um filtro do AQS para combinar vários protocolos. Aqui estão alguns exemplos de cadeias de caracteres de filtro do AQS que mostram como consultar dispositivos AEP.

Esta AQS consulta todos os objetos UPnP AssociationEndpoint quando DeviceInformationKind está definido como AsssociationEndpoint.

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

Esta consulta AQS busca todos os objetos UPnP e WSD AssociationEndpoint quando o DeviceInformationKind está definido como AsssociationEndpoint.

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

Esta AQS consulta todos os objetos UPnP AssociationEndpointService se DeviceInformationKind estiver definido como AsssociationEndpointService.

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

Esta AQS consulta objetos AssociationEndpointContainer quando o DeviceInformationKind é definido como AssociationEndpointContainer, mas só os encontra ao enumerar o protocolo UPnP. Normalmente, não seria útil enumerar contêineres que vêm apenas de um protocolo. No entanto, isso pode ser útil limitando seu filtro a protocolos em que você sabe que seu dispositivo pode ser descoberto.

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