Freigeben über


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

Important

Geräte-Metadaten sind veraltet und werden in einer zukünftigen Version von Windows entfernt. Informationen zum Ersatz dieser Funktionalität finden Sie unter Treiberpaketcontainermetadaten.

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 "Treffen von UWP-Geräte-Apps".

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 in den Gerätecontainer des Computers gruppiert werden, der die Gerätefunktionen enthält, die sich physisch auf dem Computer befinden. Eine Kamera muss in den Gerätecontainer des Computers gruppiert werden, um den physischen Standort für Apps verfügbar zu machen, da Geräte außerhalb des Computercontainers nicht davon ausgegangen werden, dass sie eine mechanische feste Richtung aufweisen.

  • System.Client.Webcam.PhysicalLocation. Die Firmware muss physische Standortinformationen bereitstellen, indem die _PLD Informationen in ACPI-Tabellen verwendet werden, um die Position und 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 die Videovorschau gespiegelt oder gedreht werden soll.

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

  • 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

In accordance with certification requirement System.Client.PCContainer.PCAppearsAsSingleObject, also known as SYSFUND-0200, the internal camera device nodes must be grouped under the PC device container. Mit anderen Worten, die interne Kamera sollte nicht in Geräten und Druckern 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ätespeicherort in ACPI-Tabellen verfügbar machen kann, kann die richtige Gruppierung in der ACPI-Ebene angegeben werden, indem _PLD Informationen in die Tabellen eingeschlossen und das Flag "UserVisible" in der ACPI-Tabelle geändert wird, wie in multifunction Device Support and Device Container Groupings 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

In accordance with certification requirement System.Client.Webcam.PhysicalLocation, the _PLD value that indicates the camera's location must be provided in the ACPI (Advanced Configuration and Power Interface) table. 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 zeigt front an, dass die Kamera dem Benutzer (Webcam) gegenübersteht, während "Zurück" angibt, dass die Kamera dem Endbenutzer (still oder Videokamera) gegenübersteht.

Wert von Bits 69:67 Panel
0 Top
1 Bottom
2 Left
3 Right
4 Front
5 Back
6 Unknown

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, wobei positive Werte für horizontalen und vertikalen Offset 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. Go to Device Manager

  3. Select and hold (or right-click) your target webcam and select Properties

  4. Open the Details tab and select Address in the Property menu

  5. The value in the Value box is the address that your device is located at

  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 SICH PLD auf der VideoFUNKTION befindet, wenn es sich bei dem Gerät um ein USB-Zusammengesetztes 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

The Windows device metadata system is able to query for an internally embedded camera's device metadata package only if the camera's device node has a Model ID property and the device category is 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:

  • Set the Model ID in the device node, by using the InternalDeviceModification flag in the device registry key

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. The Model ID property is added to the device node by using the InternalDeviceModification mechanism, which is a registry-based lookup table (LUT) that consists of registry keys that map to specific devices. Diese InternalDeviceModification-Tabelle wird unter dem folgenden Registrierungsschlüssel verwaltet:

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.

Registrierungsschlüssel und Werte für internaldevicemodification.

InternalDeviceModification-Registrierungsschlüssel

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

Registrierungsschlüsselname. InternalDeviceModification
Required/optional Required
Path HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
Format requirements None
Valid subkeys 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)
Required/optional Required
Format requirements Der Schlüsselname ist eine GUID, die vom OEM erstellt wurde. Es muss sowohl öffnende als auch schließende Klammern aufweisen.
Valid values Hardware-ID-Registrierungswerte oder PLD_Panel
Examples {43922620-DAD9-4C05-BE3F-F65B089D84D8}

Registrierungswert der Hardware-ID

Registrierungswertname HardwareIDs
Required/optional Required
Type Multi-string
Format requirements Muss das Buspräfix der Hardware-ID enthalten. Alle "" Zeichen müssen durch ein "#" ersetzt werden.
Examples USB#VID_1234&PID_ABCD&REV_0001, PCI#VEN_ABCD&DEV_1234&SUBSYS_000
Comment 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

Registrierungswertname PLD_Panel
Required/optional Optional
Type DWORD
Format requirements Muss das Buspräfix der HardwareID enthalten. Alle "\"-Zeichen müssen durch "#" ersetzt werden.
Examples 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.

Note

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 as_PLD (Physischer Gerätespeicherort) definiert. Dieser Wert, der die physische Position der Kamera in seinem Gehäuse angibt, muss eine der folgenden Sein.

Value Description
0 Top
1 Bottom
2 Left
3 Right
4 Front
5 Back
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

Metadata structure

Das Gerätemetadatenpaket für eine interne Kamera hat dieselbe Struktur wie das Gerätemetadatenpaket für jedes andere Gerät. The MetadataKey in packageinfo.xml within the device metadata package is the Model ID defined by using the InternalDeviceModification registry key. 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.

Pre-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.