Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Important
Метаданные устройства являются устаревшими и будут удалены в будущем выпуске Windows. Сведения о замене этой функции см. в разделе Метаданные контейнера пакетов драйверов.
В этом разделе содержатся сведения о поддержке внутренних камер в системах Windows 8.1. В нем описывается, как определить физическое расположение встроенных камер, чтобы они правильно работали с приложениями UWP. Он также описывает, как задать идентификатор модели, чтобы камера работала с приложениями устройств UWP. Дополнительные сведения о приложениях устройств UWP см. в статье "Знакомство с приложениями устройств UWP".
Предоставление физического расположения
Системы со встроенными камерами с механически фиксированным направлением должны сообщать о физическом расположении камер. Эта информация о физическом расположении указывает направление, к которому сталкивается камера, например передний или задний, чтобы приложения для использования камеры в Windows 8.1 работали правильно.
Требуются следующие два требования к сертификации оборудования Windows, которые позволяют Windows распознавать расположение камеры:
System.Client.PCContainer.PCAppearsAsSingleObject. Камера должна быть сгруппирована в контейнер устройства компьютера, который содержит функции устройства, расположенные физически внутри компьютера. Камера должна быть сгруппирована в контейнер устройства компьютера, чтобы предоставить ей физическое расположение для приложений, так как устройства, внешние для контейнера компьютера, не предполагают, что имеют механически фиксированное направление.
System.Client.Webcam.PhysicalLocation. Встроенное ПО должно предоставлять сведения о физическом расположении, используя сведения о _PLD в таблицах ACPI, чтобы указать расположение и ориентацию камеры.
Почему Для Windows требуются камеры физического расположения
Windows должен знать физическое расположение внутренних камер по следующим причинам:
Приложения UWP используют физическое расположение, чтобы определить, какую камеру следует использовать, если присутствуют несколько камер. Например, приложение чата по умолчанию будет использовать переднюю камеру, которая сталкивается с пользователем при запуске приложения.
Приложения UWP используют физическое расположение для определения способа зеркального отображения или поворота предварительного просмотра видео.
Если камера сталкивается с пользователем, предварительный просмотр должен выглядеть так, как если бы пользователь смотрел на зеркало. Для этого приложение перевернет левую и правую стороны предварительного просмотра, чтобы предварительный просмотр зеркально отображал видео. Если камера находится подальше от пользователя, приложение не требует зеркального отображения видео.
Если приложение поворачивает предварительный просмотр, степень поворота отличается в зависимости от положения камеры.
Как сгруппировать камеру в контейнер устройств компьютеров
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. Другими словами, внутренняя камера не должна отображаться на устройствах и принтерах и должна быть консолидирована в контейнер ПК.
Способ реализации этого требования зависит от типа шины внутренней камеры. Если устройство может предоставлять сведения о расположении физического устройства в таблицах ACPI, правильное группирование можно указать на уровне ACPI, включив _PLD сведения в таблицы и изменив флаг UserVisible в таблице ACPI, как описано в разделе "Поддержка устройств multifunction" и "Группы контейнеров устройств". В противном случае переопределите съемный флаг с помощью раздела реестра DeviceOverrides. Дополнительные сведения см. в разделе реестра DeviceOverrides.
Как предоставить физическое расположение с помощью _PLD сведений в таблице 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. Это относится к любому устройству камеры, встроенному в шасси системы, и имеет механически фиксированное направление. Встроенное ПО должно предоставить метод _PLD и задать поле Панели (биты 69:67) соответствующим значением для панели, на которой подключена камера. Например, front указывает, что камера сталкивается с пользователем (веб-камера), а назад указывает, что камера находится подальше от конечного пользователя (все еще или видеокамера).
| Значение битов 69:67 | Panel |
|---|---|
| 0 | Top |
| 1 | Bottom |
| 2 | Left |
| 3 | Right |
| 4 | Front |
| 5 | Back |
| 6 | Unknown |
Кроме того, бит 143:128 (вертикальное смещение) и биты 159:144 (горизонтальное смещение) должны обеспечить относительное расположение камеры относительно дисплея. Этот источник относится к адресации собственных пикселей в компоненте отображения и должен соответствовать текущей ориентации отображения альбомной или книжной. Источником является нижний левый угол дисплея, где положительные значения горизонтального и вертикального смещения находятся справа и вверх соответственно.
Для внутренней камеры, подключенной к USB, узел устройства для USB-устройства будет создан в таблице ACPI под узлом usb-порта.
Чтобы указать адрес (_ADR):
Установка Windows на целевой компьютер
Go to Device Manager
Select and hold (or right-click) your target webcam and select Properties
Open the Details tab and select Address in the Property menu
The value in the Value box is the address that your device is located at
Задайте значение в _ADR в таблице ACPI
Задайте значение _PLD на основе спецификации ACPI и дизайна КОМПЬЮТЕРА
В этом примере показана таблица ACPI для usb-подключенной камеры. В этом примере значение равно 0x1. Девятый байт содержит код панели для расположения (биты[69:67]). Обратите внимание, что если устройство является составным USB-устройством, PLD должен находиться на видео FUNCTION. Это означает, что потребуется дополнительная запись 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})
}
}
Дополнительные сведения о _PLD см. в спецификации ACPI.
Для узлов ниже USBCCGP значение адреса вычисляется путем добавления номера порта в первый номер интерфейса функции камеры. Если USBCCGP не загружается для устройства, адрес — это просто номер порта. Если вам нужно прогнозировать номер адреса без установки Windows, используйте эту формулу для вычисления. Если целевое устройство является одним устройством-функцией (без использования составного устройства USB), значение адреса вычисляется только с использованием номера порта.
Предоставление идентификатора модели
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. Чтобы сделать метаданные внутренней камеры обнаруживаемыми Windows, чтобы пакет метаданных устройства правильно связывался с устройством и приложением устройства UWP для конкретной камеры, изготовитель оборудования должен выполнить следующие действия:
- Set the Model ID in the device node, by using the
InternalDeviceModificationflag in the device registry key
Настройка идентификатора модели для узла устройства внутренней камеры
Для внутренних камер ИЗГОТОВИТЕЛЬ создает GUID для идентификатора модели и создает для него раздел реестра. 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. Эта таблица InternalDeviceModification поддерживается в следующем разделе реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\InternalDeviceModification
Запись подраздела, созданная в разделе реестра InternalDeviceModification, — это предоставленный OEM GUID для ModelID. Наличие этого ключа добавляет идентификатор модели в узел устройства камеры на основе идентификатора оборудования устройства и сведений о расположении, указанных значением _PLD в таблице ACPI.
Раздел реестра InternalDeviceModification
Раздел реестра InternalDeviceModification указывает, что по крайней мере одна камера использует ModelID.
| Имя ключа реестра | InternalDeviceModification |
|---|---|
| Required/optional | Required |
| Path | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control |
| Format requirements | None |
| Valid subkeys | Раздел реестра идентификаторов модели (см. следующие требования к формату подраздела и примеры) |
Раздел реестра идентификаторов модели
| Имя ключа реестра | Идентификатор модели (точное значение идентификатора модели — это имя ключа) |
|---|---|
| Required/optional | Required |
| Format requirements | Имя ключа — это GUID, созданный изготовителем оборудования. Она должна иметь как открывающая, так и закрывающая скобки. |
| Valid values | Значения реестра идентификаторов оборудования или PLD_Panel |
| Examples | {43922620-DAD9-4C05-BE3F-F65B089D84D8} |
Значение реестра идентификаторов оборудования
| Имя параметра реестра | HardwareIDs |
|---|---|
| Required/optional | Required |
| Type | Multi-string |
| Format requirements | Должен включать префикс шины идентификатора оборудования. Все символы "" должны быть заменены на "#". |
| Examples |
USB#VID_1234&PID_ABCD&REV_0001, PCI#VEN_ABCD&DEV_1234&SUBSYS_000 |
| Comment | Можно указать несколько значений идентификаторов оборудования. Если любое из аппаратных идентификаторов в списке происходит несколько раз, система задает идентификатор модели узла устройства на основе идентификатора оборудования. |
значение реестра PLD_Panel
| Имя параметра реестра | PLD_Panel |
|---|---|
| Required/optional | Optional |
| Type | DWORD |
| Format requirements | Должен включать префикс шины аппаратного идентификатора. Все символы "\" должны быть заменены на "#". |
| Examples | 4,5 |
PLD_Panel Details
Значение PLD_Panel, предоставленное в таблицах ACPI, позволяет камерам отличаться друг от друга, если система имеет два идентичных устройства камеры и оба имеют идентичные аппаратные идентификаторы. Для создания различных идентификаторов моделей используется сочетание аппаратных идентификаторов и PLD_Panel значений.
Note
Параметр PLD_Panel в разделе реестра необязателен. Windows определяет физическое расположение камеры по параметрам в таблице ACPI.
Значение реестра PLD_Panel определяется as_PLD (расположение физического устройства) в спецификации ACPI. Это значение, указывающее физическое расположение камеры в корпусе, должно быть одним из следующих значений.
| Value | Description |
|---|---|
| 0 | Top |
| 1 | Bottom |
| 2 | Left |
| 3 | Right |
| 4 | Front |
| 5 | Back |
| 6 | Неизвестно (вертикальное положение и горизонтальное положение будут игнорироваться) |
Примеры раздела реестра InternalDeviceModification
В следующих примерах показан формат раздела реестра 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
Пакет метаданных устройства для внутренней камеры имеет ту же структуру, что и пакет метаданных устройства для любого другого устройства. The MetadataKey in packageinfo.xml within the device metadata package is the Model ID defined by using the InternalDeviceModification registry key. Система метаданных Windows загружает пакет метаданных устройства на основе идентификатора модели. Идентификатор оборудования внутренней камеры не используется.
Дополнительные сведения о создании метаданных устройства для приложения устройства UWP см. в статье "Создание приложений устройств UWP".
Pre-installation
Приложение устройства Microsoft Store и пакет метаданных устройства можно предварительно установить на устройстве с помощью комплекта предварительной установки OEM (OPK).