Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um seletor de dispositivo permite limitar os dispositivos a serem pesquisados ao enumerar dispositivos, o que ajuda você a obter resultados mais relevantes e melhorar o desempenho do sistema.
Na maioria dos cenários, você obtém um seletor de dispositivo de uma pilha de dispositivos. Por exemplo, você pode usar GetDeviceSelector para dispositivos descobertos por USB. Esses seletores de dispositivo retornam uma cadeia de caracteres AQS (Sintaxe de Consulta Avançada). Para obter mais detalhes sobre o formato AQS, consulte Usando a sintaxe de consulta avançada programaticamente.
APIs importantes
Compilando a cadeia de caracteres de filtro
Há alguns casos em que você precisa enumerar dispositivos e um seletor de dispositivo fornecido não está disponível para seu cenário. Um seletor de dispositivo é uma cadeia de caracteres de filtro do AQS que contém as informações a seguir. Antes de criar uma cadeia de caracteres de filtro, você precisa saber algumas das principais informações sobre os dispositivos que deseja enumerar.
- O DeviceInformationKind dos dispositivos nos quais você está interessado. Para obter mais informações sobre como DeviceInformationKind afeta a enumeração de dispositivos, consulte Enumerar dispositivos.
- Como criar uma cadeia de caracteres de filtro do AQS (explicado neste tópico).
- As propriedades em que você está interessado. As propriedades disponíveis dependerão do DeviceInformationKind. Consulte as propriedades de informações do dispositivo para obter mais informações.
- Os protocolos que você está consultando. Isso só será necessário se você estiver procurando dispositivos por uma rede sem fio ou com fio. Para obter mais informações sobre como fazer isso, consulte Enumerar dispositivos em uma rede.
Ao usar as APIs Windows.Devices.Enumeration, você frequentemente combina o seletor de dispositivo com o tipo de dispositivo de seu interesse. A lista disponível de tipos de dispositivo é definida pela enumeração DeviceInformationKind. Essa combinação de fatores ajuda a limitar os dispositivos disponíveis àqueles nos quais você tem interesse. Se você não especificar o DeviceInformationKind ou o método que está usando não fornecer um parâmetro DeviceInformationKind , o tipo padrão será DeviceInterface.
As APIs Windows.Devices.Enumeration usam sintaxe AQS canônica, mas nem todos os operadores são compatíveis. Para obter uma lista das propriedades que estão disponíveis ao construir sua cadeia de caracteres de filtro, consulte as propriedades de informações do dispositivo.
Caution
As propriedades personalizadas definidas usando o {GUID} PID formato não podem ser usadas ao construir sua cadeia de caracteres de filtro do AQS. Isso ocorre porque o tipo de propriedade é derivado do nome de propriedade conhecido.
A tabela a seguir lista os operadores do AQS e quais tipos de parâmetros eles dão suporte.
| Operador | Tipos com suporte |
|---|---|
| COP_EQUAL | Cadeia de caracteres, booliano, GUID, UInt16, UInt32 |
| COP_NOTEQUAL | Cadeia de caracteres, booliano, GUID, UInt16, UInt32 |
| COP_LESSTHAN | UInt16, UInt32 |
| COP_GREATERTHAN | UInt16, UInt32 |
| COP_LESSTHANOREQUAL | UInt16, UInt32 |
| COP_GREATERTHANOREQUAL | UInt16, UInt32 |
| COP_VALUE_CONTAINS | Cadeia de caracteres, matriz de cadeia de caracteres, matriz booliana, matriz GUID, matriz UInt16, matriz UInt32 |
| COP_VALUE_NOTCONTAINS | Cadeia de caracteres, matriz de cadeia de caracteres, matriz booliana, matriz GUID, matriz UInt16, matriz UInt32 |
| COP_VALUE_STARTSWITH | String |
| COP_VALUE_ENDSWITH | String |
| COP_DOSWILDCARDS | Sem suporte |
| COP_WORD_EQUAL | Sem suporte |
| COP_WORD_STARTSWITH | Sem suporte |
| COP_APPLICATION_SPECIFIC | Sem suporte |
Você pode especificar NULL para COP_EQUAL ou COP_NOTEQUAL. Isso se traduz em uma propriedade sem valor ou que o valor não existe. No AQS, você especifica NULL usando colchetes vazios [].
Importante
Ao usar os operadores COP_VALUE_CONTAINS e COP_VALUE_NOTCONTAINS , eles se comportam de forma diferente com cadeias de caracteres e matrizes de cadeias de caracteres. No caso de uma cadeia de caracteres, o sistema executará uma pesquisa que não diferencia maiúsculas de minúsculas para ver se o dispositivo contém a cadeia de caracteres indicada como uma subcadeia de caracteres. No caso de uma matriz de cadeia de caracteres, as subcadeias de caracteres não são pesquisadas. Com a matriz de cadeia de caracteres, a matriz é pesquisada para ver se ela contém toda a cadeia de caracteres especificada. Não é possível pesquisar uma matriz de cadeia de caracteres para ver se os elementos na matriz contêm uma subcadeia de caracteres.
Se você não puder criar uma única cadeia de caracteres de filtro do AQS que definirá o escopo de seus resultados adequadamente, você poderá filtrar seus resultados depois de recebê-los. No entanto, recomendamos limitar ao máximo possível os resultados da cadeia de caracteres de filtro AQS inicial quando você a fornecer às APIs Windows.Devices.Enumeration. Isso ajudará a melhorar o desempenho do aplicativo.
Exemplos de cadeia de caracteres do AQS
Os exemplos a seguir demonstram como a sintaxe do AQS pode ser usada para limitar os dispositivos que você deseja enumerar. Todas essas cadeias de caracteres de filtro são emparelhadas com um DeviceInformationKind para criar um filtro completo. Se nenhum tipo for especificado, lembre-se de que o tipo padrão é DeviceInterface.
Quando esse filtro é emparelhado com um DeviceInformationKind de DeviceInterface, ele enumera todos os objetos que contêm a classe de interface captura de áudio e que estão habilitados no momento. = converte em COP_EQUALS.
System.Devices.InterfaceClassGuid:="{2eef81be-33fa-4800-9670-1cd474972c3f}" AND
System.Devices.InterfaceEnabled:=System.StructuredQueryType.Boolean#True
Quando esse filtro é emparelhado com um DeviceInformationKind de Device, ele enumera todos os objetos que têm pelo menos uma ID de hardware do GenCdRom. ~~ traduz para COP_VALUE_CONTAINS.
System.Devices.HardwareIds:~~"GenCdRom"
Quando esse filtro é emparelhado com um DeviceInformationKind de DeviceContainer, ele enumera todos os objetos que têm um nome de modelo que contém a subcadeia de caracteres Microsoft. ~~ traduz para COP_VALUE_CONTAINS.
System.Devices.ModelName:~~"Microsoft"
Quando esse filtro é emparelhado com um DeviceInformationKind de DeviceInterface, ele enumera todos os objetos que têm um nome começando com a subcadeia de caracteres Microsoft. ~< traduz para COP_STARTSWITH.
System.ItemNameDisplay:~<"Microsoft"
Quando esse filtro é emparelhado com um DeviceInformationKind de Device, enumera todos os objetos que têm uma propriedade System.Devices.IpAddress definida. <>[] é traduzido como COP_NOTEQUALS combinado com um valor NULL.
System.Devices.IpAddress:<>[]
Quando esse filtro é emparelhado com um DeviceInformationKind de Device, ele enumera todos os objetos que não têm um conjunto de propriedades System.Devices.IpAddress. =[] é traduzido como COP_EQUALS combinado com um valor NULL.
System.Devices.IpAddress:=[]
Consulte Também
Windows developer