Koppeln von Geräten

In diesem Thema wird beschrieben, wie Geräte mit dem Windows.Devices.Enumeration-Namespace gekoppelt werden.

Wichtige APIs

Automatische Kopplung

Es kann vorkommen, dass sie in Ihrer Anwendung ein Gerät verwenden möchten, es dabei aber keine Rolle spielt, ob das Gerät gekoppelt ist. Sie möchten lediglich die Funktionen des Geräts nutzen. Wenn die App beispielsweise nur ein Bild einer Webcam erfassen soll, sind Sie meist nicht am Gerät selbst interessiert, sondern nur an der Erfassung des Bilds. Falls Geräte-APIs für das betreffende Gerät verfügbar sind, fällt das Szenario unter die automatische Kopplung.

Sie nutzen einfach die dem Gerät zugeordneten APIs, führen Aufrufe nach Bedarf durch und überlassen es dem System, sich um ggf. erforderliche Kopplungen zu kümmern. Einige Geräte müssen nicht gekoppelt werden, damit Sie Funktionen verwenden können. Falls das Gerät nicht gekoppelt werden muss, übernehmen die Geräte-APIs die Kopplung im Hintergrund, sodass Sie diese Funktionen nicht in Ihre App integrieren müssen. Ihre App verfügt hierbei über keinerlei Informationen darüber, ob ein Gerät gekoppelt ist oder sein muss, aber Sie können trotzdem auf das Gerät zugreifen und seine Funktionen nutzen.

Einfache Kopplung

Bei einer einfachen Kopplung versucht Ihre Anwendung, das Geräte über die Windows.Devices.Enumeration-APIs zu koppeln. In diesem Szenario wird der Kopplungsprozess von Windows durchgeführt und behandelt. Gegebenenfalls erforderliche Benutzerinteraktionen werden von Windows behandelt. Die einfache Kopplung wird verwendet, wenn Sie ein Gerät koppeln möchten und keine relevante Geräte-API für den Versuch einer automatischen Kopplung vorhanden ist. Sie möchten lediglich das Gerät nutzen und müssen es zuvor koppeln.

Zum Durchführen der einfachen Kopplung müssen Sie zuerst das DeviceInformation-Objekt für das betreffende Gerät abrufen. Nach Erhalt dieses Objekts interagieren Sie mit der DeviceInformation.Pairing-Eigenschaft, bei der es sich um ein DeviceInformationPairing-Objekt handelt. Rufen Sie einfach DeviceInformationPairing.PairAsync auf, um zu versuchen, die Kopplung durchzuführen. Sie müssen das Ergebnis abwarten (await), um der App Zeit für den Versuch zu geben, die Kopplungsaktion auszuführen. Das Ergebnis der Kopplungsaktion wird zurückgegeben, und falls keine Fehler zurückgegeben werden, wird das Gerät gekoppelt.

Bei Verwendung der einfachen Kopplung haben Sie außerdem Zugriff auf weitere Informationen zum Kopplungsstatus des Geräts. Beispielsweise kennen Sie den Kopplungsstatus (IsPaired) und wissen, ob das Gerät gekoppelt werden kann (CanPair). Dies sind beides Eigenschaften des DeviceInformationPairing-Objekts. Bei Verwendung der automatischen Kopplung haben Sie nur dann Zugriff auf diese Informationen, wenn Sie das relevante DeviceInformation-Objekt abrufen.

Benutzerdefinierte Kopplung

Bei der benutzerdefinierten Kopplung kann Ihre App in den Kopplungsprozess einbezogen werden. So kann die App die DevicePairingKinds angeben, die für den Kopplungsprozess unterstützt werden. Außerdem müssen Sie eine eigene Benutzeroberfläche für die bedarfsgerechte Interaktion mit dem Benutzer erstellen. Verwenden Sie die benutzerdefinierte Kopplung, wenn die App etwas mehr Einfluss auf den Ablauf des Kopplungsvorgangs haben soll oder wenn Sie Ihre eigene Benutzeroberfläche für die Kopplung anzeigen möchten.

Zum Implementieren der benutzerdefinierten Kopplung müssen Sie wie bei der einfachen Kopplung das DeviceInformation-Objekt für das betreffende Gerät abrufen. Wichtig ist aber die spezielle DeviceInformation.Pairing.Custom-Eigenschaft. Hierüber erhalten Sie ein DeviceInformationCustomPairing-Objekt. Alle DeviceInformationCustomPairing.PairAsync-Methoden erfordern die Einbindung eines DevicePairingKinds-Parameters. Hiermit werden die Aktionen angegeben, die vom Benutzer durchgeführt werden müssen, um die Kopplung des Geräts zu erreichen. Weitere Informationen zu den unterschiedlichen Arten und den Aktionen, die Benutzer ausführen müssen, finden Sie auf der Seite mit der DevicePairingKinds-Referenz. Ebenso wie bei der einfachen Kopplung müssen Sie das Ergebnis abwarten (await), um der App Zeit für die Durchführung der Kopplungsaktion zu geben. Das Ergebnis der Kopplungsaktion wird zurückgegeben, und falls keine Fehler zurückgegeben werden, wird das Gerät gekoppelt.

Zum Unterstützen der benutzerdefinierten Kopplung müssen Sie einen Handler für das PairingRequested-Ereignis erstellen. Bei diesem Handler muss sichergestellt sein, dass alle unterschiedlichen DevicePairingKinds-Aufzählungen abgedeckt sind, die bei einem Szenario mit benutzerdefinierter Kopplung verwendet werden. Welche Aktion jeweils die richtige ist, hängt von den DevicePairingKinds-Aufzählungen ab, die als Teil der Ereignisargumente bereitgestellt werden.

Es ist wichtig, darauf zu achten, dass die benutzerdefinierte Kopplung immer ein Vorgang auf Systemebene ist. Aus diesem Grund wird dem Benutzer bei Vorgängen auf dem Desktop oder einem Windows Phone immer ein Systemdialogfeld angezeigt, wenn die Kopplung durchgeführt werden soll. Dies ist der Fall, weil beide Plattformen über eine Benutzeroberfläche verfügen, für die die Zustimmung durch den Benutzer erforderlich ist. Da dieses Dialogfeld automatisch generiert wird, müssen Sie kein eigenes Dialogfeld erstellen, wenn Sie bei Vorgängen auf diesen Plattformen für DevicePairingKinds die Option ConfirmOnly verwenden. Für die anderen DevicePairingKinds-Aufzählungen müssen Sie je nach DevicePairingKinds-Wert eine besondere Behandlung durchführen. Beispiele für die Behandlung der benutzerdefinierten Kopplung für unterschiedliche DevicePairingKinds-Werte finden Sie unter „Beispiel“.

Ab Windows 10, Version 1903, wird ein neues DevicePairingKinds unterstützt, ProvidePasswordCredential. Dieser Wert bedeutet, dass die App einen Benutzernamen und ein Kennwort vom Benutzer anfordern muss, um sich mit dem gekoppelten Gerät zu authentifizieren. Um diesen Fall zu behandeln, rufen Sie die AcceptWithPasswordCredential-Methode der Ereignisargumente des PairingRequested-Ereignishandlers auf, um die Kopplung zu akzeptieren. Übergeben Sie ein PasswordCredential-Objekt , das den Benutzernamen und das Kennwort als Parameter kapselt. Beachten Sie, dass sich Benutzername und Kennwort für das Remotegerät unterscheiden und oft nicht mit den Anmeldeinformationen für den lokal angemeldeten Benutzer identisch sind.

Entkoppeln

Das Entkoppeln eines Geräts ist nur für die oben beschriebene einfache und benutzerdefinierte Kopplung relevant. Wenn Sie die automatische Kopplung verwenden, ist sich Ihre App des Kopplungsstatus des Geräts nicht bewusst, und es ist nicht erforderlich, eine Entkopplung durchzuführen. Falls Sie sich für die Entkopplung eines Geräts entscheiden, ist der Prozess für die Implementierung der einfachen und benutzerdefinierten Kopplung identisch. Dies liegt daran, dass keine zusätzlichen Informationen angegeben werden müssen oder mit dem Entkopplungsprozess interagiert werden muss.

Der erste Schritt beim Entkoppeln eines Geräts ist das Abrufen des DeviceInformation-Objekts für das Gerät, das entkoppelt werden soll. Anschließend müssen Sie die DeviceInformation.Pairing-Eigenschaft abrufen und DeviceInformationPairing.UnpairAsync aufrufen. Wie bei der Kopplung warten Sie wieder das Ergebnis ab (await). Das Ergebnis der Entkopplungsaktion wird zurückgegeben, und falls keine Fehler zurückgegeben werden, wird das Gerät entkoppelt.

Beispiel

Ein funktionierendes Beispiel finden Sie im Beispiel device enumeration and pairing auf GitHub.