Freigeben über


Erstellen einer Geräteauswahl

Mit einer Geräteauswahl können Sie die Geräte auf die Suche beim Aufzählen von Geräten beschränken, was Ihnen hilft, relevantere Ergebnisse zu erhalten und die Leistung des Systems zu verbessern.

In den meisten Szenarien erhalten Sie eine Geräteauswahl von einem Gerätestapel. Beispielsweise können Sie GetDeviceSelector für Geräte verwenden, die über USB erkannt werden. Diese Geräteauswahl gibt eine AQS-Zeichenfolge (Advanced Query Syntax) zurück. Weitere Informationen zum AQS-Format finden Sie unter Programmgesteuertes Verwenden der erweiterten Abfragesyntax.

Wichtige APIs

Erstellen der Filterzeichenfolge

Es gibt Situationen, in denen Sie Geräte auflisten müssen, eine angegebene Geräteauswahl für Ihr Szenario aber nicht verfügbar ist. Eine Geräteauswahl ist eine AQS-Filterzeichenfolge, die die folgenden Informationen enthält. Vor dem Erstellen einer Filterzeichenfolge müssen Sie einige wichtige Informationen zu den Geräten kennen, die Sie aufzählen möchten.

  • Die DeviceInformationKind-Aufzählung der betreffenden Geräte. Weitere Informationen dazu, wie sich DeviceInformationKind auf die Aufzählung von Geräten auswirkt, finden Sie unter Auflisten von Geräten.
  • Erstellen einer AQS-Filterzeichenfolge (in diesem Thema erläutert).
  • Für Sie interessante Eigenschaften Die verfügbaren Eigenschaften richten sich nach der DeviceInformationKind-Aufzählung. Weitere Informationen finden Sie unter Geräteinformationseigenschaften.
  • Von Ihnen für die Abfrage verwendete Protokolle Dies ist nur erforderlich, wenn Sie über ein verkabeltes oder Drahtlosnetzwerk nach Geräten suchen. Weitere Informationen hierzu finden Sie unter Auflisten von Geräten über ein Netzwerk.

Bei Verwendung der Windows.Devices.Enumeration-APIs kombinieren Sie die Geräteauswahl häufig mit der für Sie relevanten Geräteart. Die Liste der verfügbaren Gerätearten wird durch die DeviceInformationKind-Aufzählung definiert. Diese Kombination von Faktoren hilft Ihnen, die verfügbaren Geräte auf diejenigen Geräte zu beschränken, die für Sie relevant sind. Wenn Sie die DeviceInformationKind-Aufzählung nicht angeben oder die verwendete Methode keinen DeviceInformationKind-Parameter bereitstellt, wird als Standard DeviceInterface verwendet.

Die Windows.Devices.Enumeration-APIs enthalten eine Canonical AQS-Syntax, die jedoch nicht alle Operatoren unterstützt. Eine Liste der beim Erstellen der Filterzeichenfolge verfügbaren Eigenschaften finden Sie unter Geräteinformationseigenschaften.

Achtung

Benutzerdefinierte Eigenschaften, die mit dem {GUID} PID Format definiert werden, können beim Erstellen ihrer AQS-Filterzeichenfolge nicht verwendet werden. Dies liegt daran, dass der Eigenschaftstyp vom bekannten Eigenschaftennamen abgeleitet wird.

Die folgende Tabelle enthält die AQS-Operatoren mit den von ihnen unterstützten Parametertypen.

Betreiber Unterstützte Typen
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, String Array, Boolean Array, GUID Array, UInt16 Array, UInt32 Array
COP_VALUE_NOTCONTAINS String, String Array, Boolean Array, GUID Array, UInt16 Array, UInt32 Array
COP_VALUE_STARTSWITH String
COP_VALUE_ENDSWITH String
COP_DOSWILDCARDS Nicht unterstützt
COP_WORD_EQUAL Nicht unterstützt
COP_WORD_STARTSWITH Nicht unterstützt
COP_APPLICATION_SPECIFIC Nicht unterstützt

Sie können NULL für COP_EQUAL oder COP_NOTEQUAL angeben. Dies führt zu einer Eigenschaft ohne Wert oder ohne vorhandenen Wert. In AQS geben Sie NULL mit leeren Klammern [] an.

Wichtig

Wenn Sie die Operatoren COP_VALUE_CONTAINS und COP_VALUE_NOTCONTAINS verwenden, verhalten sie sich bei Zeichenfolgen und Zeichenfolgenarrays unterschiedlich. Im Falle einer Zeichenfolge führt das System eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung durch, um festzustellen, ob das Gerät die angegebene Zeichenfolge als Teilzeichenfolge enthält. Im Falle eines Zeichenfolgenarrays werden Teilzeichenfolgen nicht gesucht. Mit dem Zeichenfolgenarray wird das Array durchsucht, um festzustellen, ob es die gesamte angegebene Zeichenfolge enthält. Es ist nicht möglich, ein Zeichenfolgenarray zu durchsuchen, um festzustellen, ob die Elemente im Array eine Teilzeichenfolge enthalten.

Wenn keine einzelne AQS-Filterzeichenfolge erstellt werden kann, die den richtigen Ergebnisbereich herausfiltert, können Sie Ihre Ergebnisse nach Erhalt filtern. Es wird jedoch empfohlen, die Ergebnisse ihrer anfänglichen AQS-Filterzeichenfolge so weit wie möglich einzuschränken, wenn Sie sie für die Windows.Devices.Enumeration-APIs bereitstellen. Dadurch wird die Leistung der Anwendung verbessert.

Beispiele für AQS-Zeichenfolgen

Die folgenden Beispiele veranschaulichen, wie die AQS-Syntax verwendet werden kann, um die aufzulistenden Geräte einzuschränken. Alle diese Filterzeichenfolgen werden mit einer DeviceInformationKind kombiniert, um einen vollständigen Filter zu erstellen. Wenn keine Art angegeben ist, wird DeviceInterface als Standardart verwendet.

Wenn dieser Filter zusammen mit einer DeviceInformationKind-Aufzählung vom Typ DeviceInterface kombiniert wird, listet er alle Objekte auf, die die Schnittstellenklasse für die Audioaufzeichnung enthalten und derzeit aktiviert sind. = übersetzt in COP_EQUALS.

System.Devices.InterfaceClassGuid:="{2eef81be-33fa-4800-9670-1cd474972c3f}" AND
System.Devices.InterfaceEnabled:=System.StructuredQueryType.Boolean#True

Wenn dieser Filter zusammen mit einer DeviceInformationKind-Aufzählung vom Typ Device kombiniert wird, listet er alle Objekte auf, die mindestens eine Hardware-ID von „GenCdRom“ aufweisen. ~~ übersetzt in COP_VALUE_CONTAINS.

System.Devices.HardwareIds:~~"GenCdRom"

Wenn dieser Filter zusammen mit einer DeviceInformationKind-Aufzählung vom Typ DeviceContainer kombiniert wird, listet er alle Objekte auf, die einen Modellnamen aufweisen, der die Teilzeichenfolge „Microsoft“ enthält. ~~ übersetzt in COP_VALUE_CONTAINS.

System.Devices.ModelName:~~"Microsoft"

Wenn dieser Filter zusammen mit einer DeviceInformationKind-Aufzählung vom Typ DeviceInterface kombiniert wird, listet er alle Objekte auf, deren Name mit der Teilzeichenfolge „Microsoft“ beginnt. ~< übersetzt in COP_STARTSWITH.

System.ItemNameDisplay:~<"Microsoft"

Wenn dieser Filter zusammen mit einer DeviceInformationKind-Aufzählung vom Typ Device kombiniert wird, listet er alle Objekte auf, für die eine System.Devices.IpAddress-Eigenschaft festgelegt wurde. <>[] übersetzt in COP_NOTEQUALS kombiniert mit einem NULL-Wert .

System.Devices.IpAddress:<>[]

Wenn dieser Filter zusammen mit einer DeviceInformationKind-Aufzählung vom Typ Device kombiniert wird, listet er alle Objekte auf, für die keine System.Devices.IpAddress-Eigenschaft festgelegt wurde. =[] übersetzt in COP_EQUALS in Kombination mit einem NULL-Wert .

System.Devices.IpAddress:=[]

Weitere Informationen