Membuat kunci properti perangkat dari deskriptor MS OS di firmware kamera USB Video Class (UVC)
Di masa lalu, produsen kamera USB Video Class (UVC) harus menulis file INF kustom untuk menyediakan fungsionalitas seperti kunci properti perangkat. Untuk kunci registri sederhana, driver USBVideo memiliki mekanisme untuk membuat kunci registri dari deskriptor MS OS jika nama kunci yang dimaksud diawali dengan UVC-
. Ini memperluas fungsionalitas tersebut di driver USBVideo untuk juga membuat kunci properti perangkat dari deskriptor MS OS jika mengikuti format tertentu. Ini memungkinkan firmware kamera USBVideo untuk mencapai paritas fitur dengan driver kamera MIPI tanpa menulis INF khusus untuk kamera tersebut.
Catatan
Jika kunci properti perangkat yang sama didefinisikan dalam INF kustom, kunci tersebut akan mengambil alih nilai yang disediakan oleh deskriptor MS OS.
Berlaku untuk
- Windows 11 dan sistem operasi yang lebih baru
Deskriptor properti registri MS OS 2.0
Deskriptor properti registri MS OS 2.0 saat ini didefinisikan sebagai berikut:
Offset | Bidang | Ukuran | Deskripsi |
---|---|---|---|
0 | wLength | 2 | Panjang, dalam byte, dari deskriptor ini. |
2 | wDescriptorType | 2 | MS_OS_20_FEATURE_REG_PROPERTY |
4 | wPropertyDataType | 2 | Jenis properti registri |
6 | wPropertyNameLength | 2 | Panjang nama properti. |
8 | PropertyName | Variabel | Nama properti registri. |
8+M | wPropertyDataLength | 2 | Panjang data properti |
10+M | PropertyData | Variabel | Data properti |
nilai wPropertyDataType untuk deskriptor properti registri MS OS 2.0
Tabel berikut ini menjelaskan nilai wPropertyDataType untuk deskriptor properti registri MS OS 2.0:
Nilai | Deskripsi |
---|---|
0 | DIPESAN |
1 | Untai (karakter) Unicode yang dihentikan NULL (REG_SZ) |
2 | Untai (karakter) Unicode yang dihentikan NULL yang mencakup variabel lingkungan (REG_EXPAND_SZ) |
3 | Biner bentuk bebas (REG_BINARY) |
4 | Bilangan bulat 32-bit little-endian (REG_DWORD_LITTLE_ENDIAN) |
5 | Bilangan bulat 32-bit big-endian (REG_DWORD_BIG_ENDIAN) |
6 | String Unicode yang dihentikan NULL yang berisi tautan simbolis (REG_LINK) |
7 | Beberapa string Unicode yang dihentikan NULL (REG_MULTI_SZ) |
8 dan lebih tinggi | DIPESAN |
Driver USBVideo saat ini akan menyalin semua deskriptor MS OS yang memiliki awalan UVC-
sebagai nama variabel registri ke setiap simpul antarmuka perangkat. Ini adalah salinan langsung satu-ke-satu dari satu kunci registri ke kunci registri lainnya, menghapus awalan UVC-
. Untuk kunci properti perangkat, diperlukan informasi tambahan. Untuk menentukan kunci properti perangkat, perlu ada GUID dan ID yang ditentukan. Selain itu, setiap kunci memerlukan jenis dan nilai data yang sesuai untuk data tersebut. Untuk fitur ini, driver USBVideo akan memetakan nilai registri dan mengetik ke DEVPROPTYPE.
Kemungkinan Jenis Registri
Nilai Registri | Deskripsi | Nilai DEVPROPTYPE | Deskripsi |
---|---|---|---|
1 | REG_SZ | DEVPROP_TYPE_STRING | String yang dihentikan null |
2 | REG_EXPAND_SZ | NA | Tidak didukung |
3 | REG_BINARY | DEVPROP_TYPE_BINARY | Data biner kustom |
4 | REG_DWORD_LITTLE_ENDIAN | DEVPROP_TYPE_UINT32 | Int tidak bertanda 32-bit (ULONG32) |
5 | REG_DWORD_BIG_ENDIAN | NA | Tidak didukung |
6 | REG_LINK | NA | Tidak didukung |
7 | REG_MULTI_SZ | DEVPROP_TYPE_STRING_LIST | Daftar string multi-sz |
Untuk menentukan bahwa kunci properti perangkat ini harus dibuat, awalan baru akan ditentukan. Jika deskriptor MS OS ditemukan dengan format DKEY-GUID,ID<>>,< driver USBVideo akan mencoba pembuatan ini. Nilai registri harus dari salah satu format yang ditentukan di atas (membuang dan mengabaikan REG_LINK, REG_EXPAND_SZ, dan REG_DWORD_BIG_ENDIAN). Format GUID harus {XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} dan format ID harus menjadi nilai numerik yang lebih besar dari 2.
Contoh deskriptor MS OS
Contoh berikut mendefinisikan deskriptor 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)
};
Ini akan mengonversi ke kunci properti perangkat berikut menggunakan IoSetDevicePropertyData dengan parameter berikut:
DEVPROPKEY
DEVPROPGUID = {4023440c-a74e-46e0-82df-e486fa545f40}
DEVPROPID = 3
DEVPROPTYPE = DEVPROP_TYPE_UINT32
PropertyBuffer containing UINT32 value = 940
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk