Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un selettore di dispositivo consente di limitare la ricerca dei dispositivi durante l'enumerazione dei dispositivi, che consente di ottenere risultati più pertinenti e migliorare le prestazioni del sistema.
Nella maggior parte degli scenari si ottiene un selettore di dispositivo da uno stack di dispositivi. Ad esempio, è possibile usare GetDeviceSelector per i dispositivi individuati tramite USB. Questi selettori di dispositivo restituiscono una stringa AQS (Advanced Query Syntax). Per altre informazioni sul formato AQS, vedere Uso della sintassi di query avanzata tramite programmazione.
API Importanti
Compilazione della stringa di filtro
In alcuni casi è necessario enumerare i dispositivi e un selettore di dispositivo fornito non è disponibile per lo scenario in uso. Un selettore di dispositivo è una stringa di filtro AQS che contiene le informazioni seguenti. Prima di creare una stringa di filtro, è necessario conoscere alcune informazioni chiave sui dispositivi da enumerare.
- Il DeviceInformationKind dei dispositivi a cui sei interessato. Per altre informazioni sull'impatto di DeviceInformationKind sull'enumerazione dei dispositivi, vedi Enumerare i dispositivi.
- Come compilare una stringa di filtro AQS (illustrata in questo argomento).
- Le proprietà a cui si è interessati. Le proprietà disponibili dipenderanno dal DeviceInformationKind. Per ulteriori informazioni, vedere le proprietà delle informazioni sul dispositivo .
- I protocolli sui quali si effettua una query. Questa operazione è necessaria solo se si cercano dispositivi tramite una rete wireless o cablata. Per ulteriori informazioni su come eseguire questa operazione, vedere Enumerare i dispositivi su una rete.
Quando si usano le API Windows.Devices.Enumeration , si combina spesso il selettore di dispositivo con il tipo di dispositivo a cui si è interessati. L'elenco disponibile dei tipi di dispositivo è definito dall'enumerazione DeviceInformationKind . Questa combinazione di fattori consente di limitare i dispositivi disponibili a quelli a cui si è interessati. Se non specifichi DeviceInformationKind o il metodo in uso non fornisce un parametro DeviceInformationKind , il tipo predefinito è DeviceInterface.
Le API Windows.Devices.Enumeration usano la sintassi AQS canonica, ma non tutti gli operatori sono supportati. Per un elenco delle proprietà disponibili quando si costruisce la stringa di filtro, vedere Proprietà delle informazioni sul dispositivo.
Attenzione
Non è possibile utilizzare le proprietà personalizzate definite usando il formato {GUID} PID durante la costruzione della stringa di filtro AQS. Il motivo è che il tipo di proprietà è derivato dal nome della proprietà noto.
Nella tabella seguente sono elencati gli operatori AQS e i tipi di parametri supportati.
| Operatore | Tipi supportati |
|---|---|
| COP_EQUAL | String, Boolean, GUID, UInt16, UInt32 |
| COP_NOTEQUAL | String, boolean, GUID, UInt16, UInt32 |
| COP_LESSTHAN | UInt16, UInt32 |
| COP_GREATERTHAN | UInt16, UInt32 |
| COP_LESSTHANOREQUAL | UInt16, UInt32 |
| COP_MAGGIOREOUGUALE | UInt16, UInt32 |
| COP_VALUE_CONTAINS | Stringa, matrice di stringhe, matrice booleana, matrice GUID, matrice UInt16, matrice UInt32 |
| COP_VALUE_NOTCONTAINS | Stringa, matrice di stringhe, matrice booleana, matrice GUID, matrice UInt16, matrice UInt32 |
| COP_VALUE_STARTSWITH | Stringa |
| COP_VALUE_ENDSWITH | Stringa |
| COP_DOSWILDCARDS | Non supportato |
| COP_WORD_EQUAL | Non supportato |
| INIZIA_CON_PAROLA | Non supportato |
| Applicazione_Specifica_COP | Non supportato |
È possibile specificare NULL per COP_EQUAL o COP_NOTEQUAL. Ciò si traduce in una proprietà senza valore o che il valore non esiste. In AQS specificare NULL usando parentesi quadre vuote [].
Importante
Quando si usano gli operatori COP_VALUE_CONTAINS e COP_VALUE_NOTCONTAINS , si comportano in modo diverso con stringhe e matrici di stringhe. Nel caso di una stringa, il sistema eseguirà una ricerca senza distinzione tra maiuscole e minuscole per verificare se il dispositivo contiene la stringa indicata come sottostringa. Nel caso di una matrice di stringhe, le sottostringhe non vengono cercate. Con la matrice di stringhe, viene eseguita la ricerca nella matrice per verificare se contiene l'intera stringa specificata. Non è possibile cercare una matrice di stringhe per verificare se gli elementi nella matrice contengono una sottostringa.
Se non è possibile creare una singola stringa di filtro AQS che limiti correttamente i risultati, è possibile filtrare i risultati dopo averli ricevuti. Tuttavia, è consigliabile limitare il più possibile i risultati dalla stringa di filtro AQS iniziale quando la si fornisce alle API Windows.Devices.Enumeration. Ciò consentirà di migliorare le prestazioni dell'applicazione.
Esempi di stringhe AQS
Gli esempi seguenti illustrano come usare la sintassi AQS per limitare i dispositivi da enumerare. Tutte queste stringhe di filtro vengono abbinate a un oggetto DeviceInformationKind per creare un filtro completo. Se non viene specificato alcun tipo, tenere presente che il tipo predefinito è DeviceInterface.
Quando questo filtro è associato a un DeviceInformationKind di DeviceInterface, enumera tutti gli oggetti che contengono la classe di interfaccia di acquisizione audio e che sono attualmente abilitati. = viene convertito in COP_EQUALS.
System.Devices.InterfaceClassGuid:="{2eef81be-33fa-4800-9670-1cd474972c3f}" AND
System.Devices.InterfaceEnabled:=System.StructuredQueryType.Boolean#True
Quando il filtro viene associato a un DeviceInformationKind di Device, enumera tutti gli oggetti che hanno almeno un ID hardware di GenCdRom. ~~ viene convertito in COP_VALUE_CONTAINS.
System.Devices.HardwareIds:~~"GenCdRom"
Quando questo filtro viene associato a un DeviceInformationKind di DeviceContainer, enumera tutti gli oggetti con un nome di modello contenente la sottostringa Microsoft. ~~ viene convertito in COP_VALUE_CONTAINS.
System.Devices.ModelName:~~"Microsoft"
Quando questo filtro è associato a un DeviceInformationKind di DeviceInterface, enumera tutti gli oggetti che iniziano con la sottostringa 'Microsoft'. ~< si traduce in COP_STARTSWITH.
System.ItemNameDisplay:~<"Microsoft"
Quando questo filtro è associato a un DeviceInformationKind di Device, enumera tutti gli oggetti con una proprietà System.Devices.IpAddress impostata. <>[] viene tradotto in COP_NOTEQUALS combinato con un valore NULL.
System.Devices.IpAddress:<>[]
Quando questo filtro è associato a un DeviceInformationKind di Device, enumera tutti gli oggetti che non dispongono della proprietà System.Devices.IpAddress. =[] si traduce in COP_EQUALS combinato con un valore NULL.
System.Devices.IpAddress:=[]