Freigeben über


Identifizieren der Position interner Kameras (UWP-Geräte-Apps)

Dieses Thema enthält Informationen zur Unterstützung interner Kameras auf Systemen in Windows 8.1. Es beschreibt, wie die physische Position von integrierten Kameras identifiziert wird, damit sie mit UWP-Apps ordnungsgemäß funktionieren. Außerdem wird beschrieben, wie die Modell-ID so festgelegt wird, dass die Kamera mit UWP-Geräte-Apps funktioniert. Weitere Informationen zu UWP-Geräte-Apps im Allgemeinen finden Sie unter UWP-Geräte-Apps kennenlernen.

Bereitstellen eines physischen Standorts

Systeme mit integrierten Kameras mit mechanischer fester Richtung müssen die physische Position der Kameras melden. Diese physischen Standortinformationen geben an, in welche Richtung die Kamera gerichtet ist, z. B. vorne oder hinten, sodass Apps für die korrekte Verwendung der Kamera in Windows 8.1 ordnungsgemäß funktionieren.

Die folgenden beiden Windows-Hardwarezertifizierungsanforderungen, mit denen Windows die Position einer Kamera erkennen kann, sind erforderlich:

  • System.Client.PCContainer.PCAppearsAsSingleObject. Die Kamera muss im Gerätecontainer des Computers gruppiert werden, der die Gerätefunktionen enthält, die sich physisch im Computer befinden. Eine Kamera muss im Gerätecontainer des Computers gruppiert werden, um ihren physischen Standort für Apps sichtbar zu machen, da nicht davon ausgegangen wird, dass Geräte außerhalb des Computercontainers eine mechanisch feste Richtung haben.

  • System.Client.Webcam.PhysicalLocation. Die Firmware muss Informationen zum physischen Standort bereitstellen, indem sie die _PLD-Informationen in ACPI-Tabellen verwendet, um den Standort und die Ausrichtung der Kamera anzugeben.

Warum Windows die physischen Positionskameras benötigt

Windows muss die physische Position interner Kameras aus den folgenden Gründen kennen:

  • UWP-Apps bestimmen anhand der physischen Position, welche Kamera verwendet werden soll, wenn mehrere Kameras vorhanden sind. Beispielsweise verwendet eine Chatanwendung standardmäßig die Frontkamera, die dem Benutzer beim Starten der App gegenübersteht.

  • UWP-Apps verwenden den physischen Speicherort, um zu bestimmen, wie sie die Videovorschau Spiegel oder drehen.

  • Wenn die Kamera dem Benutzer gegenübersteht, sollte die Vorschau so aussehen, als ob der Benutzer eine Spiegel betrachtet. Dazu kippt die App die linke und rechte Seite der Vorschau, sodass die Vorschau das Video Spiegel. Wenn sich die Kamera vom Benutzer entfernt befindet, muss die App das Video nicht Spiegel.

  • Wenn die App die Vorschau dreht, unterscheidet sich der Grad der Drehung je nach Position der Kamera.

So gruppieren Sie die Kamera in den Computergerätecontainer

Gemäß der Zertifizierungsanforderung System.Client.PCContainer.PCAppearsAsSingleObject, auch bekannt als SYSFUND-0200, müssen die internen Kamerageräteknoten unter dem PC-Gerätecontainer gruppiert werden. Mit anderen Worten, die interne Kamera sollte nicht in Geräte und Drucken angezeigt werden und muss in den PC-Container konsolidiert werden.

Die Möglichkeit, diese Anforderung zu implementieren, hängt vom Bustyp der internen Kamera ab. Wenn das Gerät Informationen zum physischen Gerätestandort in ACPI-Tabellen offenlegen kann, kann die richtige Gruppierung in der ACPI-Ebene angegeben werden, indem _PLD-Informationen in die Tabellen aufgenommen und das UserVisible-Flag in der ACPI-Tabelle geändert werden, wie unter Multifunktionsgerät Support- und Gerätecontainergruppierungen beschrieben. Setzen Sie andernfalls das wechselbare Flag mithilfe des DeviceOverrides-Registrierungsschlüssels außer Kraft. Weitere Informationen finden Sie unter DeviceOverrides-Registrierungsschlüssel.

Bereitstellen eines physischen Standorts mithilfe von _PLD Informationen in der ACPI-Tabelle

Gemäß der Zertifizierungsanforderung System.Client.Webcam.PhysicalLocation muss der _PLD Wert, der die Position der Kamera angibt, in der ACPI-Tabelle (Erweiterte Konfiguration und Power Interface) angegeben werden. Dies gilt für alle Kamerageräte, die in das Gehäuse des Systems integriert sind und mechanische Feste Richtung haben. Die Firmware muss die _PLD-Methode bereitstellen und das Panelfeld (Bits 69:67) auf den entsprechenden Wert für das Panel festlegen, auf dem die Kamera montiert ist. Beispielsweise gibt „Vorne“ an, dass die Kamera dem Benutzer zugewandt ist (Webcam), während „Rücken“ angibt, dass die Kamera vom Endbenutzer weg zeigt (Foto- oder Videokamera).

Wert von Bits 69:67 Panel
0 TOP
1 Unten
2 Nach links
3 Right
4 Front
5 Zurück
6 Unbekannt

Darüber hinaus muss Bit 143:128 (Vertikaler Offset) und Bits 159:144 (Horizontaler Offset) die relative Position der Kamera in Bezug auf die Anzeige bereitstellen. Dieser Ursprung ist relativ zur nativen Pixeladressierung in der Anzeigekomponente und sollte der aktuellen Anzeigeausrichtung des Quer- oder Hochformats entsprechen. Der Ursprung ist die untere linke Ecke der Anzeige, wo positive Werte für den horizontalen und vertikalen Versatz nach rechts bzw. oben liegen.

Bei einer USB-angeschlossenen internen Kamera würde der Geräteknoten für das USB-Gerät in der ACPI-Tabelle unter einem USB-Port-Geräteknoten erstellt.

So geben Sie die Adresse an (_ADR):

  1. Installieren von Windows auf dem Ziel-PC

  2. Gehen Sie zu Geräte-Manager

  3. Wählen und halten Sie Ihre Ziel-Webcam (oder klicken Sie mit der rechten Maustaste darauf) und wählen Sie Eigenschaften aus.

  4. Öffnen sie die Registerkarte Details und wählen Sie Adresse im Menü Eigenschaft aus.

  5. Der Wert im Feld Wert ist die Adresse, an der sich Ihr Gerät befindet.

  6. Festlegen des Werts in _ADR in der ACPI-Tabelle

  7. Festlegen des _PLD Werts basierend auf der ACPI-Spezifikation und dem Entwurf von PC

Dieses Beispiel ist eine ACPI-Tabelle für eine USB-angeschlossene Kamera. In diesem Beispiel ist der Wert 0x1. Das neunte Byte enthält den Panelcode für die Position (Bits[69:67]). Beachten Sie, dass PLD auf der Videofunktion stehen muss, wenn es sich um ein USB-Composite-Gerät handelt. Dies bedeutet, dass ein zusätzlicher Device()-Eintrag erforderlich wäre.

Device(PRTD)
{
     Name(_ADR, 0x6)
     Name(_UPC, Package(0x4)
     {
            ....
     }
     Name(_PLD, Buffer(0x10)
     {
            ....
     }
     Device(WCAM)
     {
           Name(_ADR, 0x6)
           Name(_PLD, Buffer(0x10) {
           0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
           0x20, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
     }
}

Ausführlichere Informationen zu _PLD finden Sie in der ACPI-Spezifikation.

Bei Knoten nachgeschalteter USBCCGP wird der Adresswert berechnet, indem die Anschlussnummer zur ersten Schnittstellennummer der Kamerafunktion hinzugefügt wird. Wenn USBCCGP für das Gerät nicht geladen wird, ist die Adresse einfach die Portnummer. Wenn Sie die Adressnummer vorhersehen müssen, ohne Windows zu installieren, verwenden Sie diese Formel, um sie zu berechnen. Wenn es sich bei dem Zielgerät um ein einzelnes Funktionsgerät handelt (ohne das USB-Verbundformatgerät zu verwenden), wird der Adresswert nur mit der Portnummer berechnet.

Bereitstellen der Modell-ID

Das Windows-Gerätemetadatensystem kann das Gerätemetadatenpaket einer intern eingebetteten Kamera nur abfragen, wenn der Geräteknoten der Kamera eine Modell-ID-Eigenschaft aufweist und die Gerätekategorie lautet Imaging.Webcam. Damit die Metadaten einer internen Kamera von Windows erkannt werden können, damit das Gerätemetadatenpaket ordnungsgemäß mit dem Gerät und der kameraspezifischen UWP-Geräte-App verknüpft ist, muss ein OEM Folgendes ausführen:

  • Festlegen der Modell-ID im Geräteknoten mithilfe des InternalDeviceModification Kennzeichens im Geräteregistrierungsschlüssel

Festlegen der Modell-ID für den Geräteknoten der internen Kamera

Für interne Kameras erstellt der OEM eine GUID für die Modell-ID und erstellt einen Registrierungsschlüssel dafür. Die Model ID-Eigenschaft wird dem Geräteknoten mithilfe des InternalDeviceModification-Mechanismus hinzugefügt, einer registrierungsbasierten Nachschlagetabelle (LUT), die aus Registrierungsschlüsseln besteht, die bestimmten Geräten zugeordnet sind. Diese InternalDeviceModification-Tabelle wird unter dem folgenden Registrierungsschlüssel Standard gespeichert:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification

Der unter dem Registrierungsschlüssel "InternalDeviceModification" zu erstellende Unterschlüsseleintrag ist die OEM-bereitgestellte GUID für ModelID. Das Vorhandensein dieses Schlüssels fügt die Modell-ID dem Geräteknoten der Kamera hinzu, basierend auf der Gerätehardware-ID und den Standortinformationen, die durch den _PLD Wert in der ACPI-Tabelle angegeben sind.

registry keys and values for internaldevicemodification.

InternalDeviceModification-Registrierungsschlüssel

Der Registrierungsschlüssel InternalDeviceModification gibt an, dass mindestens eine Kamera die ModelID verwendet.

Registrierungsschlüsselname. InternalDeviceModification
Erforderlich/optional Erforderlich
Pfad HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
Formatanforderungen Keine
Gültige Unterschlüssel Registrierungsschlüssel "Modell-ID" (siehe die folgenden Unterschlüsselformatanforderungen und -beispiele)

Registrierungsschlüssel "Modell-ID"

Registrierungsschlüsselname. Modell-ID (exakter Modell-ID-Wert ist der Schlüsselname)
Erforderlich/optional Erforderlich
Formatanforderungen Der Schlüsselname ist eine GUID, die vom OEM erstellt wurde. Es muss sowohl öffnende als auch schließende Klammern aufweisen.
Gültige Werte Hardware-ID-Registrierungswerte oder PLD_Panel
Beispiele {43922620-DAD9-4C05-BE3F-F65B089D84D8}

Hardware-ID-Registrierungswerte

Name des Registrierungswerts HardwareIDs
Erforderlich/optional Erforderlich
Typ Mehrteilige Zeichenfolge
Formatanforderungen Muss das Buspräfix der Hardware-ID enthalten. Alle "" Zeichen müssen durch ein "#" ersetzt werden.
Beispiele USB#VID_1234&PID_ABCD&REV_0001, PCI#VEN_ABCD&DEV_1234&SUBSYS_000
Kommentar Es können mehrere Hardware-ID-Werte bereitgestellt werden. Wenn eine der Hardware-IDs in der Liste mehrmals auftritt, legt das System die Modell-ID des Geräteknotens basierend auf der Hardware-ID fest.

PLD_Panel Registrierungswert

Name des Registrierungswerts PLD_Panel
Erforderlich/optional Optional
Typ DWORD
Formatanforderungen Muss das Buspräfix der Hardware-ID enthalten. Alle "\" Zeichen müssen durch ein "#" ersetzt werden.
Beispiele 4,5

PLD_Panel-Details

Mit dem in ACPI-Tabellen bereitgestellten PLD_Panel Wert können Kameras voneinander unterschieden werden, wenn ein System über zwei identische Kamerageräte verfügt und beide über identische Hardware-IDs verfügen. Um unterschiedliche Modell-IDs zu erstellen, wird die Kombination aus Hardware-IDs und PLD_Panel Wert verwendet.

Hinweis

Die Einstellung PLD_Panel im Registrierungsschlüssel ist optional. Windows bestimmt die physische Position der Kamera anhand der Einstellungen in der ACPI-Tabelle.

Der PLD_Panel Registrierungswert wird in der ACPI-Spezifikation als _PLD (Physischer Gerätespeicherort) definiert. Dieser Wert, der die physische Position der Kamera in seinem Gehäuse angibt, muss eine der folgenden Sein.

Wert Beschreibung
0 TOP
1 Unten
2 Nach links
3 Right
4 Front
5 Zurück
6 Unbekannt (Vertikale Position und horizontale Position werden ignoriert)

Beispiele für InternalDeviceModification-Registrierungsschlüssel

Die folgenden Beispiele veranschaulichen das Format des InternalDeviceModification-Registrierungsschlüssels.

{00001111-2222-3333-4444-555566667777}
      HardwareIDs (Multi sz) =
      "USB#VID_1234&PID_ABCD&REV_0001","USB#VID_1234&PID_ABCD"
      PLD_Panel (DWORD) = 4
{88889999-aaaa-bbbb-cccc-ddddeeeeffff}
      HardwareIDs (multi sz) = "USB#VID_5678&PID_WXYZ&REV_0001"
      PLD_Panel (DWORD) = 5
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification\{BBBF38D6-9866-493D-B86F-986E339E096D}]
"PLD_Panel"=dword:00000004
"HardwareIDs"=hex(7):55,00,53,00,42,00,23,00,56,00,49,00,44,00,5f,00,30,00,34,\
  00,35,00,45,00,26,00,50,00,49,00,44,00,5f,00,30,00,30,00,31,00,30,00,23,00,\
  52,00,45,00,56,00,5f,00,30,00,30,00,30,00,31,00,00,00,55,00,53,00,42,00,23,\
  00,56,00,49,00,44,00,5f,00,30,00,34,00,35,00,45,00,26,00,50,00,49,00,44,00,\
  5f,00,30,00,30,00,31,00,30,00,00,00,00,00

Metadatenstruktur

Das Gerätemetadatenpaket für eine interne Kamera hat die gleiche Struktur wie das Gerätemetadatenpaket für jedes andere Gerät. Der MetadataKey in packageinfo.xml innerhalb des Gerätemetadatenpakets ist die Modell-ID, die mithilfe des Registrierungsschlüssels InternalDeviceModification definiert wird. Das Windows-Metadatensystem lädt das Gerätemetadatenpaket basierend auf der Modell-ID herunter. Die Hardware-ID der internen Kamera wird nicht verwendet.

Weitere Informationen zum Erstellen von Gerätemetadaten für Ihre UWP-Geräte-App finden Sie unter Erstellen von UWP-Geräte-Apps.

Vor der Installation

Sowohl die Microsoft Store-Geräte-App als auch das Gerätemetadatenpaket können mithilfe des OEM Preinstallation Kit (OPK) auf dem Gerät vorinstalliert werden.

UWP-Geräte-Apps für interne Geräte