Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
No passado, os fabricantes de câmeras USB Video Class (UVC) tinham que criar arquivos INF personalizados para fornecer funcionalidades, como chaves de propriedade do dispositivo. Para chaves de registo simples, o controlador USBVideo tem um mecanismo para criar chaves de registo a partir do descritor do MS OS se o nome da chave em questão for precedido de UVC-. Isso expande essa funcionalidade no driver USBVideo para também criar chaves de propriedade do dispositivo a partir de um descritor do MS OS se ele seguir um formato específico. Isso permite que o firmware da câmera USBVideo atinja a paridade de recursos com um driver de câmera MIPI sem criar um INF personalizado para essas câmeras.
Observação
Se a mesma chave de propriedade do dispositivo for definida em um INF personalizado, ela substituirá o valor fornecido pelo descritor do MS OS.
Aplica-se a
- Sistemas operativos Windows 11 e posteriores
Descritor de propriedade de registro do MS OS 2.0
O descritor de propriedade de registo atual do MS OS 2.0 é definido da seguinte forma:
| Compensação | Campo | Tamanho | Descrição |
|---|---|---|---|
| 0 | wComprimento | 2 | O tamanho, em bytes, deste descritor. |
| 2 | wDescriptorType | 2 | MS_OS_20_FEATURE_REG_PROPERTY |
| 4 | wPropertyDataType | 2 | Tipo de propriedade do Registo |
| 6 | wPropertyNameLength | 2 | Comprimento do nome da propriedade. |
| 8 | Nome da propriedade | Variável | Nome da propriedade do registro. |
| 8+M | wPropertyDataLength | 2 | Comprimento dos dados de propriedade |
| Mais de 10 milhões | Dados de Propriedade | Variável | Dados da propriedade |
Valores wPropertyDataType para o descritor de propriedade do Registro MS OS 2.0
A tabela a seguir descreve os valores wPropertyDataType para o descritor de propriedade do Registro MS OS 2.0:
| Valor | Descrição |
|---|---|
| 0 | RESERVADO |
| 1 | Cadeia de caracteres Unicode terminada por NULL (REG_SZ) |
| 2 | Cadeia de caracteres Unicode terminada por NULL que inclui variáveis de ambiente (REG_EXPAND_SZ) |
| 3 | Binário de forma livre (REG_BINARY) |
| 4 | Inteiro de 32 bits little-endian (REG_DWORD_LITTLE_ENDIAN) |
| 5 | Big-endian inteiro de 32 bits (REG_DWORD_BIG_ENDIAN) |
| 6 | Cadeia de caracteres Unicode terminada por NULL que contém um link simbólico (REG_LINK) |
| 7 | Várias cadeias de caracteres Unicode terminadas por NULL (REG_MULTI_SZ) |
| 8 e superior | RESERVADO |
O driver USBVideo atualmente copiará todos os descritores do MS OS que têm um prefixo de UVC- como nomes de variáveis do registo para cada nó de interface do dispositivo. Estas são cópias diretas um-para-um de uma chave de registo para outra, removendo o prefixo UVC- . Para chaves de propriedade do dispositivo, são necessárias informações adicionais. Para definir uma chave de propriedade do dispositivo, é necessário que haja um GUID e um ID definidos. Além disso, cada chave requer um tipo de dados e um valor correspondentes para esses dados. Para esse recurso, o driver USBVideo mapeará um valor do Registro e digitará para um DEVPROPTYPE.
Possíveis tipos de registro
| Valor do Registo | Descrição | Valor DEVPROPTYPE | Descrição |
|---|---|---|---|
| 1 | REG_SZ | DEVPROP_TYPE_STRING | Cadeia de caracteres terminada em nulo |
| 2 | REG_EXPAND_SZ | NA | Não suportado |
| 3 | REG_BINARY | Tipo_DEPROP_BINÁRIO | Dados binários personalizados |
| 4 | REG_DWORD_LITTLE_ENDIAN | DEVPROP_TYPE_UINT32 | int não assinado de 32 bits (ULONG32) |
| 5 | REG_DWORD_BIG_ENDIAN | NA | Não suportado |
| 6 | REG_LINK | NA | Não suportado |
| 7 | REG_MULTI_SZ | DEVPROP_TYPE_STRING_LIST | Lista de cadeias de caracteres Multi-sz |
Para determinar que essa chave de propriedade do dispositivo deve ser criada, um novo prefixo será definido. Se for encontrado um descritor do MS OS com o formato DKEY-<GUID>,<ID>, então o driver USBVideo tentará essa criação. O valor do Registro deve ser de um dos formatos definidos acima (descartando e ignorando REG_LINK, REG_EXPAND_SZ e REG_DWORD_BIG_ENDIAN). O formato do GUID deve ser {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} e o formato do ID deve ser um valor numérico superior a 2.
Exemplo de descritor do MS OS
O exemplo a seguir define um descritor do MS OS:
UCHAR Example2_MSOS20DescriptorSet_UVCDevicePropertyKeyForFutureWindows\[0x3C\] =
{
//
// MS OS 2.0 Descriptor Set Header
//
0x0A, 0x00, // wLength - 10 bytes
0x00, 0x00, // MSOS20_SET_HEADER_DESCRIPTOR
0x00, 0x00, 0x0?, 0x06, // dwWindowsVersion – 0x060?0000 for future Windows version
0x76, 0x00, // wTotalLength – 118 bytes
//
// MS OS 2.0 Registry Value Feature Descriptor
//
0x6c, 0x00, // wLength - 108 bytes
0x04, 0x00, // wDescriptorType – 4 for Registry Property
0x04, 0x00, // wPropertyDataType - 4 for REG_DWORD_LITTLE_ENDIAN
0x5E, 0x00, // wPropertyNameLength – 94 bytes
'D', 0x00, 'K', 0x00, // Property Name – **DKEY-{4023440c-a74e-46e0-82df-e486fa545f40},3**
'E', 0x00, 'Y', 0x00,
'-', 0x00, '{', 0x00,
'4', 0x00, '0', 0x00,
'2', 0x00, '3', 0x00,
'4', 0x00, '4', 0x00,
'0', 0x00, 'C', 0x00,
'-', 0x00, 'A', 0x00,
'7', 0x00, '4', 0x00,
'E', 0x00, '-', 0x00,
'4', 0x00, '6', 0x00,
'E', 0x00, '0', 0x00,
'-', 0x00, '8', 0x00,
'2', 0x00, 'D', 0x00,
'F', 0x00, '-', 0x00,
'E', 0x00, '4', 0x00,
'8', 0x00, '6', 0x00,
'F', 0x00, 'A', 0x00,
'5', 0x00, '4', 0x00,
'5', 0x00, 'F', 0x00,
'4', 0x00, '0', 0x00,
'}', 0x00, ',', 0x00,
'3', 0x00, 0x00, 0x00,
0x00, 0x00,
0x04, 0x00, // wPropertyDataLength – 4 bytes
0xAC, 0x03, 0x00, 0x00 // PropertyData – 0x000003AC (940)
};
Isso seria convertido para a seguinte chave de propriedade do dispositivo usando IoSetDevicePropertyData com os seguintes parâmetros:
DEVPROPKEY
DEVPROPGUID = {4023440c-a74e-46e0-82df-e486fa545f40}
DEVPROPID = 3
DEVPROPTYPE = DEVPROP_TYPE_UINT32
PropertyBuffer containing UINT32 value = 940