Compartilhar via


Enumerar dispositivos em uma rede

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

APIs importantes

Enumerando dispositivos em protocolos de 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). Como um grupo, eles são chamados de AEPs ou objetos AEP.

Algumas APIs de dispositivo fornecem uma cadeia de caracteres seletora que você pode usar para enumerar por meio dos objetos AEP disponíveis. Isso pode incluir dispositivos emparelhados e não emparelhados 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. O 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 dispositivos manualmente 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ão descobertos com a string 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 deseja que o rádio Wi-Fi procure dispositivos Wi-Fi Direct se estiver particularmente interessado em dispositivos UPnP. O Windows definiu uma identidade para cada protocolo que você pode usar para definir o escopo da enumeração. A tabela a seguir lista os tipos e identificadores de protocolo.

Tipo de dispositivo de protocolo ou rede 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-9ced54641188}
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 conecte-se agora (WNC) {4c1b1ef8-2f62-4b9f-9bc5-b21ab636138f}
Docks WiGig {a277f3a5-8764-4f88-8045-4c5e962640b1}
Provisionamento de 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. Lembre-se de que você pode usar o operador OR em um filtro AQS para combinar vários protocolos. Aqui estão alguns exemplos de cadeias de caracteres de filtro AQS que mostram como consultar dispositivos AEP.

Esse AQS consulta todos os objetos UPnP AssociationEndpoint quando o DeviceInformationKind é definido como AsssociationEndpoint.

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

Esse AQS consulta todos os objetos UPnP e WSD AssociationEndpoint quando o DeviceInformationKind é definido como AsssociationEndpoint.

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

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

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

Esse AQS consulta objetos AssociationEndpointContainer quando o DeviceInformationKind é definido como AssociationEndpointContainer, mas só os encontra enumerando 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}"