Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Um seletor de dispositivos permite-lhe limitar os dispositivos a explorar ao enumerar dispositivos, o que ajuda a obter resultados mais relevantes e a melhorar o desempenho do sistema.
Na maioria das situações, obtém um seletor de dispositivos a partir de uma stack de dispositivos. Por exemplo, pode usar o GetDeviceSelector para dispositivos descobertos via USB. Estes seletores de dispositivos devolvem uma cadeia de caracteres de Sintaxe Avançada de Consulta (AQS). Para mais detalhes sobre o formato AQS, consulte Utilizar a Sintaxe de Consulta Avançada programaticamente.
- APIs importantes: Windows. Devices.Enumeration
Construir a cadeia de filtros
Existem casos em que precisa de enumerar dispositivos e um seletor de dispositivos fornecido não está disponível para o seu caso. Um seletor de dispositivo é uma cadeia de filtro AQS que contém a seguinte informação. Antes de criar uma cadeia de filtros, precisa de conhecer algumas informações-chave sobre os dispositivos que pretende enumerar.
- O DeviceInformationKind dos dispositivos nos quais tem interesse. Para mais informações sobre como o DeviceInformationKind impacta a enumeração de dispositivos, consulte Enumerar dispositivos.
- Como construir uma cadeia de filtros AQS (explicado neste tópico).
- As propriedades que lhe interessam. As propriedades disponíveis dependerão do DeviceInformationKind. Consulte Propriedades da informação do dispositivo para mais informações.
- Os protocolos através dos quais está a efetuar consultas. Isto só é necessário se estiver à procura de dispositivos através de uma rede sem fios ou com fios. Para mais informações sobre como fazer isto, consulte Enumerar dispositivos numa rede.
Ao utilizar as APIs Windows.Devices.Enumeration, é frequente combinar o seletor de dispositivos com o tipo de dispositivo em que está interessado. A lista disponível de tipos de dispositivos é definida pela enumeração DeviceInformationKind. Esta combinação de fatores ajuda-o a limitar os dispositivos disponíveis para aqueles que lhe interessam. Se não especificar o DeviceInformationKind, ou se o método que está a usar não fornecer um parâmetro DeviceInformationKind , o tipo padrão é DeviceInterface.
As APIs Windows.Devices.Enumeration usam a sintaxe AQS canónica, mas nem todos os operadores são suportados. Para uma lista de propriedades disponíveis quando está a construir a sua cadeia de filtro, consulte Propriedades de informação do dispositivo.
Atenção
Propriedades personalizadas definidas usando o {GUID} PID formato não podem ser usadas ao construir a sua cadeia de filtro AQS. Isto deve-se ao facto de o tipo de propriedade derivar do nome bem conhecido da propriedade.
A tabela seguinte lista os operadores AQS e os tipos de parâmetros que suportam.
| Operador | Tipos suportados |
|---|---|
| COP_EQUAL | cadeia de caracteres, booleano, GUID, UInt16, UInt32 |
| COP_NOTEQUAL | cadeia de caracteres, booleano, GUID, UInt16, UInt32 |
| COP_LESSTHAN | UInt16, UInt32 |
| COP_GREATERTHAN | UInt16, UInt32 |
| COP_LESSTHANOREQUAL | UInt16, UInt32 |
| COP_GREATERTHANOREQUAL | UInt16, UInt32 |
| COP_VALUE_CONTAINS | String, matriz de strings, matriz de booleanos, matriz de GUID, matriz de UInt16, matriz de UInt32 |
| COP_VALUE_NOTCONTAINS | String, matriz de strings, matriz de booleanos, matriz de GUID, matriz de UInt16, matriz de UInt32 |
| COP_VALUE_STARTSWITH | String |
| COP_VALUE_ENDSWITH | String |
| COP_DOSWILDCARDS | Não suportado |
| COP_WORD_EQUAL | Não suportado |
| COP_WORD_STARTSWITH | Não suportado |
| COP_APPLICATION_SPECIFIC | Não suportado |
Podes especificar NULL para COP_EQUAL ou COP_NOTEQUAL. Isto traduz-se numa propriedade sem valor, ou que o valor não existe. No AQS, especifica NULL usando colchetes vazios [].
Importante
Ao utilizar os operadores COP_VALUE_CONTAINS e COP_VALUE_NOTCONTAINS, estes comportam-se de forma diferente com cadeias de caracteres e arrays de cadeias de caracteres. No caso de uma cadeia de caracteres, o sistema efetuará uma pesquisa sem distinção entre maiúsculas e minúsculas para verificar se o dispositivo contém a cadeia de caracteres indicada como subcadeia. No caso de um array de cadeias, as substrings não são pesquisadas. Com o array de strings, o array é pesquisado para ver se contém toda a string especificada. Não é possível pesquisar num array de cadeias para ver se os elementos do array contêm uma substring.
Se não conseguir criar uma única cadeia de filtro AQS que defina adequadamente os seus resultados, pode filtrar os resultados depois de os receber. No entanto, recomendamos que limite ao máximo os resultados da sua cadeia de filtro AQS inicial ao fornecê-la às APIs Windows.Devices.Enumeration. Isto ajudará a melhorar o desempenho da sua aplicação.
Exemplos de cadeias de caracteres AQS
Os exemplos seguintes demonstram como a sintaxe AQS pode ser usada para limitar os dispositivos que pretende enumerar. Todas estas cadeias de filtro são emparelhadas com um DeviceInformationKind para criar um filtro completo. Se não for especificado nenhum tipo, lembre-se que o tipo padrão é DeviceInterface.
Quando este filtro é emparelhado com um DeviceInformationKind de DeviceInterface, enumera todos os objetos que contêm a classe de interface de Captura de Áudio e que estão atualmente ativados. = corresponde a COP_EQUALS.
System.Devices.InterfaceClassGuid:="{2eef81be-33fa-4800-9670-1cd474972c3f}" AND
System.Devices.InterfaceEnabled:=System.StructuredQueryType.Boolean#True
Quando este filtro é emparelhado com um DeviceInformationKind de Device, enumera todos os objetos que têm pelo menos um ID de hardware do GenCdRom. ~~ traduz-se por COP_VALUE_CONTAINS.
System.Devices.HardwareIds:~~"GenCdRom"
Quando este filtro é emparelhado com um DeviceInformationKind de DeviceContainer, enumera todos os objetos que tenham um nome de modelo contendo a substring Microsoft. ~~ traduz-se por COP_VALUE_CONTAINS.
System.Devices.ModelName:~~"Microsoft"
Quando este filtro é emparelhado com um DeviceInformationKind de DeviceInterface, enumera todos os objetos que têm um nome que começa pela substring Microsoft. ~< traduz-se por COP_STARTSWITH.
System.ItemNameDisplay:~<"Microsoft"
Quando este filtro é emparelhado com um DeviceInformationKind de Device, enumera todos os objetos que têm um conjunto de propriedades System.Devices.IpAddress. <>[] traduz-se em COP_NOTEQUALS combinado com um valor NULL .
System.Devices.IpAddress:<>[]
Quando este filtro é emparelhado com um DeviceInformationKind de Device, enumera todos os objetos que não têm um conjunto de propriedades System.Devices.IpAddress. =[] traduz-se em COP_EQUALS combinado com um valor NULL .
System.Devices.IpAddress:=[]
Ver também
Windows developer