Condividi tramite


Identificazione della posizione delle fotocamere interne (app per dispositivi UWP)

Important

I metadati del dispositivo sono deprecati e verranno rimossi in una versione futura di Windows. Per informazioni sulla sostituzione di questa funzionalità, vedere Driver Package Container Metadata.For information about the replacement for this functionality, see Driver Package Container Metadata.

Questo argomento fornisce informazioni sul supporto di fotocamere interne nei sistemi in Windows 8.1. Descrive come identificare la posizione fisica delle fotocamere predefinite in modo che funzionino correttamente con le app UWP. Descrive anche come impostare l'ID modello in modo che la fotocamera funzioni con le app per dispositivi UWP. Per ulteriori informazioni sulle app per dispositivi UWP in generale, consulta Scopri le app per dispositivi UWP.

Fornire la posizione fisica

I sistemi con telecamere incorporate con direzione meccanicamente fissa devono segnalare la posizione fisica delle telecamere. Queste informazioni sulla posizione fisica indicano la direzione in cui si trova la fotocamera, ad esempio davanti o indietro, in modo che le app per l'uso della fotocamera in Windows 8.1 funzionino correttamente.

Sono necessari i due requisiti di certificazione hardware Windows seguenti, che consentono a Windows di riconoscere la posizione di una fotocamera:

  • System.Client.PCContainer.PCAppearsAsSingleObject. La fotocamera deve essere raggruppata nel contenitore del dispositivo del computer, che contiene le funzioni del dispositivo che si trovano fisicamente all'interno del computer. Una fotocamera deve essere raggruppata nel contenitore del dispositivo del computer per esporre la posizione fisica alle app, perché si presuppone che i dispositivi esterni al contenitore del computer non abbiano una direzione meccanicamente fissa.

  • System.Client.Webcam.PhysicalLocation. Il firmware deve fornire informazioni sulla posizione fisica, utilizzando le informazioni _PLD nelle tabelle ACPI per indicare la posizione e l'orientamento della fotocamera.

Perché Windows richiede le fotocamere di posizione fisica

Windows deve conoscere la posizione fisica delle fotocamere interne per i motivi seguenti:

  • Le app UWP usano la posizione fisica per determinare quale fotocamera usare se sono presenti più fotocamere. Ad esempio, un'applicazione di chat usa per impostazione predefinita la fotocamera anteriore che affronta l'utente all'avvio dell'app.

  • Le app UWP usano la posizione fisica per determinare come eseguire il mirroring o ruotare l'anteprima video.

  • Se la fotocamera è rivolta all'utente, l'anteprima dovrebbe apparire come se l'utente stia guardando uno specchio. A tale scopo, l'app capovolge i lati sinistro e destro dell'anteprima, in modo che l'anteprima rispecchi il video. Se la fotocamera si trova lontano dall'utente, l'app non deve eseguire il mirroring del video.

  • Se l'app ruota l'anteprima, il grado di rotazione varia a seconda della posizione della fotocamera.

Come raggruppare la fotocamera nel contenitore di dispositivi dei computer

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. In altre parole, la fotocamera interna non deve essere visualizzata in Dispositivi e stampanti e deve essere consolidata nel contenitore PC.

Il modo per implementare questo requisito dipende dal tipo di bus della fotocamera interna. Se il dispositivo può esporre informazioni sulla posizione del dispositivo fisico nelle tabelle ACPI, è possibile specificare il raggruppamento corretto nel livello ACPI includendo _PLD informazioni nelle tabelle e modificando il flag UserVisible nella tabella ACPI, come descritto in Supporto dispositivi multifunzione e Raggruppamenti di contenitori di dispositivi. In caso contrario, eseguire l'override del flag rimovibile usando la chiave del Registro di sistema DeviceOverrides. Per ulteriori informazioni, vedi Chiave del Registro di sistema DeviceOverrides.

Come fornire la posizione fisica usando le informazioni _PLD nella tabella ACPI

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. Questo vale per qualsiasi dispositivo fotocamera integrato nello chassis del sistema e ha una direzione meccanicamente fissa. Il firmware deve fornire il metodo _PLD e impostare il campo Pannello (bit 69:67) sul valore appropriato per il pannello in cui è montata la fotocamera. Ad esempio, "Front" indica che la fotocamera è rivolta all'utente (webcam), mentre "Back" indica che la fotocamera è rivolta lontano dall'utente finale (macchina fotografica o videocamera).

Valore dei bit 69:67 Panel
0 Top
1 Bottom
2 Left
3 Right
4 Front
5 Back
6 Unknown

Inoltre, bit 143:128 (offset verticale) e bit 159:144 (offset orizzontale) devono fornire la posizione relativa della fotocamera rispetto allo schermo. Questa origine è relativa all'indirizzamento pixel nativo nel componente di visualizzazione e deve corrispondere all'orientamento dello schermo attuale del orizzontale o verticale. L'origine è l'angolo inferiore sinistro dello schermo, dove i valori di offset orizzontale e verticale positivi sono rispettivamente a destra e in alto.

Per una fotocamera interna connessa tramite USB, il nodo del dispositivo per il dispositivo USB verrebbe creato nella tabella ACPI in un nodo dispositivo porta USB.

Per specificare l'indirizzo (_ADR):

  1. Installare Windows nel PC di destinazione

  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. Impostare il valore in _ADR nella tabella ACPI

  7. Impostare il valore _PLD in base alla specifica ACPI e alla progettazione del PC

Questo esempio è una tabella ACPI per una fotocamera connessa tramite USB. In questo esempio il valore è 0x1. Il nono byte contiene il codice del pannello per la posizione (bit[69:67]). Si noti che se il dispositivo è un dispositivo composito USB, il PLD deve trovarsi nella FUNZIONE video. Ciò significa che sarebbe necessaria un'ulteriore voce Device().

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})
     }
}

Per informazioni più dettagliate sulle _PLD, vedere la specifica ACPI.

Per i nodi downstream di USBCCGP, il valore dell'indirizzo viene calcolato aggiungendo il numero di porta al primo numero di interfaccia della funzione della fotocamera. Se USBCCGP non viene caricato per il dispositivo, l'indirizzo è semplicemente il numero di porta. Se è necessario stimare il numero di indirizzo senza installare Windows, usare questa formula per calcolarla. Se il dispositivo di destinazione è un dispositivo a funzione singola (senza l'uso del dispositivo USB di tipo composito), il valore dell'indirizzo viene calcolato usando solo il numero di porta.

Fornire l'ID modello

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. Per rendere individuabili i metadati di una fotocamera interna da Windows in modo che il pacchetto di metadati del dispositivo sia associato correttamente al dispositivo e all'app per dispositivi UWP specifica della fotocamera, un OEM deve eseguire le operazioni seguenti:

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

Come impostare l'ID modello per il nodo del dispositivo della fotocamera interna

Per le fotocamere interne, l'OEM crea un GUID da usare per l'ID modello e ne crea una chiave del Registro di sistema. 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. Questa tabella InternalDeviceModification viene mantenuta sotto la seguente chiave del Registro di sistema:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification

La voce della sottochiave da creare sotto la chiave del Registro di sistema InternalDeviceModification è il GUID fornito dall'OEM per il ModelID. La presenza di questa chiave aggiunge l'ID modello al nodo del dispositivo della fotocamera, in base all'ID hardware del dispositivo e alle informazioni sulla posizione indicate dal valore _PLD nella tabella ACPI.

chiavi e valori del Registro di sistema per internaldevicemodification.

Chiave del Registro di sistema InternalDeviceModification

La chiave del Registro di sistema InternalDeviceModification indica che almeno una fotocamera usa ModelID.

Nome della chiave del Registro di sistema InternalDeviceModification
Required/optional Required
Path HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
Format requirements None
Valid subkeys Chiave del Registro di sistema dell'ID modello (vedere i requisiti e gli esempi di formato della sottochiave seguenti)

Chiave del Registro di sistema dell'ID modello

Nome della chiave del Registro di sistema ID modello (il valore esatto dell'ID modello è il nome della chiave)
Required/optional Required
Format requirements Il nome della chiave è un GUID creato dall'OEM. Deve avere sia parentesi di apertura che di chiusura.
Valid values Valori del Registro dell'ID hardware o PLD_Panel
Examples {43922620-DAD9-4C05-BE3F-F65B089D84D8}

Valore del Registro di sistema dell'ID hardware

Nome del valore del registro HardwareIDs
Required/optional Required
Type Multi-string
Format requirements Deve includere il prefisso del bus dell'ID hardware. Tutti i caratteri "" devono essere sostituiti con un "#".
Examples USB#VID_1234&PID_ABCD&REV_0001, PCI#VEN_ABCD&DEV_1234&SUBSYS_000
Comment È possibile specificare più valori di ID hardware. Quando si verifica più volte uno degli ID hardware nell'elenco, il sistema imposta l'ID modello del nodo del dispositivo in base all'ID hardware.

PLD_Panel valore del Registro di sistema

Nome del valore del registro PLD_Panel
Required/optional Optional
Type DWORD
Format requirements Deve includere il prefisso del bus di HardwareID. Tutti i caratteri "\" devono essere sostituiti con un "#".
Examples 4,5

PLD_Panel Details

Il valore PLD_Panel fornito nelle tabelle ACPI consente di distinguere le fotocamere l'una dall'altra quando un sistema dispone di due dispositivi fotocamera identici e entrambi hanno ID hardware identici. Per creare diversi ID modello, viene utilizzata la combinazione degli ID hardware e del valore di PLD_Panel.

Note

L'impostazione PLD_Panel nella chiave del Registro di sistema è facoltativa. Windows determina la posizione fisica della fotocamera in base alle impostazioni nella tabella ACPI.

Il valore del Registro di sistema PLD_Panel è definito come PLD (Posizione dispositivo fisico) nella specifica ACPI. Questo valore, che indica la posizione fisica della fotocamera nell'enclosure, deve essere uno dei seguenti.

Value Description
0 Top
1 Bottom
2 Left
3 Right
4 Front
5 Back
6 Sconosciuto (posizione verticale e posizione orizzontale verranno ignorati)

Esempi delle chiavi di registro InternalDeviceModification

Gli esempi seguenti illustrano il formato della chiave del Registro di sistema InternalDeviceModification.

{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

Il pacchetto di metadati del dispositivo per una fotocamera interna ha la stessa struttura del pacchetto di metadati del dispositivo per qualsiasi altro dispositivo. The MetadataKey in packageinfo.xml within the device metadata package is the Model ID defined by using the InternalDeviceModification registry key. Il sistema di metadati di Windows scarica il pacchetto di metadati del dispositivo in base all'ID modello. L'ID hardware della fotocamera interna non viene utilizzato.

Per altre info sulla creazione di metadati dei dispositivi per l'app per dispositivi UWP, vedi Creazione di app per dispositivi UWP.

Pre-installation

Sia l'app per dispositivi di Microsoft Store che il pacchetto di metadati del dispositivo possono essere preinstallati nel dispositivo usando OEM Preinstallation Kit (OPK).