Membuat pemilih perangkat
Pemilih perangkat memungkinkan Anda membatasi perangkat untuk dicari saat menghitung perangkat, yang membantu Anda mendapatkan hasil yang lebih relevan dan meningkatkan performa sistem.
Dalam sebagian besar skenario, Anda mendapatkan pemilih perangkat dari tumpukan perangkat. Misalnya, Anda dapat menggunakan GetDeviceSelector untuk perangkat yang ditemukan melalui USB. Pemilih perangkat ini mengembalikan string Sintaks Kueri Tingkat Lanjut (AQS). Untuk detail selengkapnya tentang format AQS, lihat Menggunakan Sintaks Kueri Tingkat Lanjut Secara Terprogram.
API penting
Membangun string filter
Ada beberapa kasus di mana Anda perlu menghitung perangkat dan pemilih perangkat yang disediakan tidak tersedia untuk skenario Anda. Pemilih perangkat adalah string filter AQS yang berisi informasi berikut. Sebelum membuat string filter, Anda perlu mengetahui beberapa informasi utama tentang perangkat yang ingin Anda hitung.
- DeviceInformationKind dari perangkat yang Anda minati. Untuk informasi selengkapnya tentang bagaimana DeviceInformationKind memengaruhi enumerasi perangkat, lihat Menghitung perangkat.
- Cara membuat string filter AQS (dijelaskan dalam topik ini).
- Properti yang Anda minati. Properti yang tersedia akan bergantung pada DeviceInformationKind. Lihat Properti informasi perangkat untuk informasi selengkapnya.
- Protokol yang Anda kueri. Ini hanya diperlukan jika Anda mencari perangkat melalui jaringan nirkabel atau kabel. Untuk informasi selengkapnya tentang melakukan ini, lihat Menghitung perangkat melalui jaringan.
Saat menggunakan API Windows.Devices.Enumeration , Anda sering menggabungkan pemilih perangkat dengan jenis perangkat yang Anda minati. Daftar jenis perangkat yang tersedia ditentukan oleh enumerasi DeviceInformationKind. Kombinasi faktor ini membantu Anda membatasi perangkat yang tersedia untuk perangkat yang Anda minati. Jika Anda tidak menentukan DeviceInformationKind, atau metode yang Anda gunakan tidak menyediakan parameter DeviceInformationKind , jenis defaultnya adalah DeviceInterface.
API Windows.Devices.Enumeration menggunakan sintaks AQS kanonis, tetapi tidak semua operator didukung. Untuk daftar properti yang tersedia saat Anda membuat string filter, lihat Properti informasi perangkat.
Perhatian
Properti kustom yang ditentukan menggunakan {GUID} PID
format tidak dapat digunakan saat membuat string filter AQS Anda. Ini karena jenis properti berasal dari nama properti terkenal.
Tabel berikut mencantumkan operator AQS dan jenis parameter apa yang didukungnya.
Operator | Jenis yang didukung |
---|---|
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_GREATERTHANOREQUAL | UInt16, UInt32 |
COP_VALUE_CONTAINS | String, array string, array boolean, array GUID, array UInt16, array UInt32 |
COP_VALUE_NOTCONTAINS | String, array string, array boolean, array GUID, array UInt16, array UInt32 |
COP_VALUE_STARTSWITH | String |
COP_VALUE_ENDSWITH | String |
COP_DOSWILDCARDS | Tidak didukung |
COP_WORD_EQUAL | Tidak didukung |
COP_WORD_STARTSWITH | Tidak didukung |
COP_APPLICATION_SPECIFIC | Tidak didukung |
Anda dapat menentukan NULL untuk COP_EQUAL atau COP_NOTEQUAL. Ini diterjemahkan ke properti tanpa nilai, atau bahwa nilai tidak ada. Di AQS, Anda menentukan NULL dengan menggunakan tanda kurung kosong [].
Penting
Saat menggunakan operator COP_VALUE_CONTAINS dan COP_VALUE_NOTCONTAINS , mereka bertindak berbeda dengan string dan array string. Dalam kasus string, sistem akan melakukan pencarian yang tidak peka huruf besar/kecil untuk melihat apakah perangkat berisi string yang ditunjukkan sebagai substring. Dalam kasus array string, substring tidak dicari. Dengan array string, array dicari untuk melihat apakah berisi seluruh string yang ditentukan. Tidak dimungkinkan untuk mencari array string untuk melihat apakah elemen dalam array berisi substring.
Jika Anda tidak dapat membuat satu string filter AQS yang akan mencakup hasil Anda dengan tepat, Anda dapat memfilter hasil setelah menerimanya. Namun, sebaiknya batasi hasil dari string filter AQS awal Anda sebanyak mungkin saat Anda memberikannya ke API Windows.Devices.Enumeration. Ini akan membantu meningkatkan performa aplikasi Anda.
Contoh string AQS
Contoh berikut menunjukkan bagaimana sintaks AQS dapat digunakan untuk membatasi perangkat yang ingin Anda hitung. Semua string filter ini dipasangkan dengan DeviceInformationKind untuk membuat filter lengkap. Jika tidak ada jenis yang ditentukan, ingatlah bahwa jenis defaultnya adalah DeviceInterface.
Ketika filter ini dipasangkan dengan DeviceInformationKind dari DeviceInterface, filter ini menghitung semua objek yang berisi kelas antarmuka Audio Capture dan yang saat ini diaktifkan. = diterjemahkan ke COP_EQUALS.
System.Devices.InterfaceClassGuid:="{2eef81be-33fa-4800-9670-1cd474972c3f}" AND
System.Devices.InterfaceEnabled:=System.StructuredQueryType.Boolean#True
Ketika filter ini dipasangkan dengan DeviceInformationKind of Device, filter ini menghitung semua objek yang memiliki setidaknya satu id perangkat keras GenCdRom. ~~ diterjemahkan ke COP_VALUE_CONTAINS.
System.Devices.HardwareIds:~~"GenCdRom"
Ketika filter ini dipasangkan dengan DeviceInformationKind dari DeviceContainer, filter ini menghitung semua objek yang memiliki nama model yang berisi substring Microsoft. ~~ diterjemahkan ke COP_VALUE_CONTAINS.
System.Devices.ModelName:~~"Microsoft"
Ketika filter ini dipasangkan dengan DeviceInformationKind dari DeviceInterface, filter ini menghitung semua objek yang memiliki nama yang dimulai dengan substring Microsoft. ~< diterjemahkan ke COP_STARTSWITH.
System.ItemNameDisplay:~<"Microsoft"
Ketika filter ini dipasangkan dengan DeviceInformationKind of Device, filter ini menghitung semua objek yang memiliki kumpulan properti System.Devices.IpAddress. <>[] diterjemahkan ke COP_NOTEQUALS dikombinasikan dengan nilai NULL .
System.Devices.IpAddress:<>[]
Ketika filter ini dipasangkan dengan DeviceInformationKind of Device, filter ini menghitung semua objek yang tidak memiliki kumpulan properti System.Devices.IpAddress. =[] diterjemahkan ke COP_EQUALS dikombinasikan dengan nilai NULL .
System.Devices.IpAddress:=[]