Bagikan melalui


Pemberitahuan rana/sakelar privasi

Beberapa produsen kamera mungkin ingin menyertakan rana fisik atau sakelar kill yang dapat memblokir kamera menggunakan kontrol fisik yang tidak dapat ditimpa oleh perangkat lunak. Fitur-fitur ini tidak didorong karena risiko aktivasi yang tidak disengaja dan mengakibatkan kebingungan pelanggan, tetapi jika diimplementasikan, mereka harus mengikuti panduan yang dijelaskan dalam Rana privasi kamera dan mematikan sakelar, termasuk untuk melaporkan status rana/sakelar.

Saat rana ditutup atau tombol matikan aktif, kamera terus berfungsi penuh ke Windows dan aplikasi menggunakan API kamera yang ada, tetapi aliran gambar atau video akan berwarna hitam atau gelap (atau diganti dengan gambar statis, seperti gambar perangkat dengan panah yang menunjuk ke lokasi kontrol fisik). Hal ini menimbulkan potensi masalah di mana aplikasi yang mengakses kamera tidak menyadari bahwa kamera dihilangkan, dan pengguna akhir yang secara tidak sengaja mengaktifkan kontrol fisik mungkin bingung tentang mengapa kamera mereka tidak berfungsi seperti yang diharapkan.

Untuk mengatasi masalah ini, kamera yang menerapkan rana atau sakelar kill harus menerapkan mekanisme untuk mendeteksi status rana/sakelar dan melaporkannya ke sistem operasi. Topik ini memberikan panduan untuk OEM dan ODM yang akan menerapkan mekanisme pelaporan ini, dan juga menjelaskan kontrol dan struktur yang akan digunakan pengembang driver kamera untuk menerbitkan status rana/sakelar ke OS.

Selain fitur pemberitahuan rana/sakelar privasi, OS mengimplementasikan deteksi oklusi kamera di mana kamera berwajah depan (FFC) dihilangkan oleh tutup perangkat saat tindakan tutup sakelar tutup diatur ke "Jangan Apa-apa", misalnya, komputer tidak akan tidur atau mati saat tutup ditutup. Contoh skenario bisa menjadi laptop berlabuh dengan monitor eksternal yang digunakan saat tutup laptop ditutup. Mungkin ada beberapa faktor bentuk perangkat di mana perilaku ini tidak diinginkan, oleh karena itu, mekanisme untuk menolak deteksi oklusi penutup perangkat didefinisikan di bawah ini.

Gambaran umum arsitektur

Kontrol KSPROPERTY_CAMERACONTROL_PRIVACY digunakan saat OS mengkueri status saat ini dari driver kamera. Ini hanya boleh digunakan sebagai properti Get. Pengembang driver tidak boleh mendukung properti set kontrol KSPROPERTY_CAMERACONTROL_PRIVACY di driver mereka.

Catatan

Kamera yang mengimplementasikan rana privasi atau mematikan sakelar harus sesuai dengan persyaratan yang dijelaskan dalam Rana privasi kamera dan mematikan sakelar.

Dalam driver USB Video Class (UVC), kontrol KSPROPERTY_CAMERACONTROL_PRIVACY dipetakan ke properti CT_PRIVACY_CONTROL yang ditentukan dalam Spesifikasi Kelas UVC v1.5.

diagram yang mengilustrasikan arsitektur pemberitahuan rana privasi

Selain penggunaan kontrol KSPROPERTY yang ada, KSPROPERTY_CAMERACONTROL_PRIVACY, alur panggilan KSEVENT baru diperkenalkan sehingga driver kamera dapat memberi sinyal ketika status rana/sakelar privasi kamera diubah jika ada klien yang mendaftar untuk KSEVENT tersebut.

KSEVENT dikeluarkan dengan menggunakan Set GUID dan Id yang sama dengan yang digunakan KSPROPERTY.

Untuk mengklarifikasi apa yang ditunjukkan pada diagram di atas, OS mengharapkan driver AVS menerapkan mekanisme, jika pengembang driver memilih untuk mendukung fitur ini, untuk mendapatkan dan mendengarkan perubahan status yang dihasilkan sensor rana. OS meminta status melalui metode dapatkan KSPROPERTY dan mengeluarkan KSEVENT yang menunggu bahwa driver akan memberi sinyal ketika status rana diubah. Perubahan status rana/sakelar tidak boleh mencegah kamera berfungsi, misalnya, untuk menyebabkan situasi kesalahan.

CATATAN: Jika driver AVS mendukung fitur ini tetapi perangkat keras yang mendasar tidak, driver AVS akan mengembalikan kesalahan yang tidak didukung ketika OS mengeluarkan pendaftaran KSEVENT .

Metode Sensing dan Pelaporan

Beberapa kamera merasakan status rana menggunakan algoritma analisis piksel yang berjalan di firmware Image Signal Processor (ISP). Ini memberlakukan batasan pada kamera yang harus secara aktif streaming kamera untuk merasakan dan melaporkan status rana. Lihat Sensing dan pelaporan status rana untuk detail selengkapnya tentang kapan dan bagaimana kamera harus melaporkan status rana/sakelarnya.

Demikian pula, pengembang aplikasi yang menggunakan sinyal oklusi kamera tidak boleh menggunakan status rana yang dilaporkan kecuali kamera secara aktif streaming. Lihat Kelas CameraOcclusionInfo untuk detail selengkapnya.

KSPROPERTY

Tabel Ringkasan Penggunaan (KSPROPERTY)

Dapatkan Tetapkan Target Jenis deskriptor properti Jenis nilai properti
Ya Tidak Filter KSPROPERTY_CAMERACONTROL_S PANJANG

Nilai properti (data operasi) adalah LONG yang menentukan apakah mode privasi diaktifkan atau dinonaktifkan:

  • Nilai 0 menunjukkan bahwa sensor kamera dapat mengambil gambar video

  • Nilai 1 menunjukkan bahwa sensor kamera dicegah untuk menangkap gambar video

Struktur KSPROPERTY_CAMERA_CONTROL_S harus diisi sebagai berikut:

Anggota struktur Nilai
KSPROPERTY. Set Harus PROPSETID_VIDCAP_CAMERACONTROL
KSPROPERTY.Id Harus KSPROPERTY_CAMERACONTROL_PRIVACY
KSPROPERTY. Bendera Harus KSPROPERTY_TYPE_GET
Nilai Menginisialisasi ke 0
Bendera Diabaikan, atur ke 0
Kemampuan Diabaikan, atur ke 0

KSEVENT

Tabel Ringkasan Penggunaan (KSEVENT)

Dapatkan Tetapkan Target Jenis pendeskripsi peristiwa Jenis nilai peristiwa
Tidak Ya Filter KSEVENT KSEVENTDATA

Struktur KSEVENT harus diisi sebagai berikut:

Anggota struktur Nilai
Tetapkan Harus PROPSETID_VIDCAP_CAMERACONTROL
Id Harus KSPROPERTY_CAMERACONTROL_PRIVACY
Bendera KSEVENT_TYPE_ENABLE

Struktur KSEVENTDATA harus diisi sebagai berikut:

Anggota struktur Nilai
NotificationType Harus KSEVENTF_EVENT_HANDLE

Menolak deteksi oklusi tutup perangkat

Untuk menolak deteksi oklusi tutup perangkat, OEM dapat menentukan Kunci Properti Perangkat berikut:

DEVPROPKEY

    DEVPROPGUID = {3AB8560B-EFCF-43C1-A7EC-130E46857AF4}

    DEVPROPID = 2

DEVPROPTYPE = DEVPROP_TYPE_UINT32

PropertyBuffer = (ULONG) 1

PropertyBufferSize = sizeof(ULONG)

Catatan

Mengatur nilai PropertyBuffer ke 0 sama dengan tidak menentukan Kunci Properti Perangkat sama sekali.

Kunci Properti Perangkat dapat disediakan baik dalam file INF driver dengan menggunakan AddProperty atau dengan menggunakan deskriptor OS MS jika tidak ada file INF, misalnya, kamera USB menggunakan driver kamera kotak masuk UVC.

Contoh ADDProperty INF

[OptOutLidOcclusionSampleAddPropertySection]

{3AB8560B-EFCF-43C1-A7EC-130E46857AF4},2,7,,1

Contoh deskriptor MS OS

UCHAR Example2_MSOS20DescriptorSet_UVCDevicePropertyKeyForLidOcclusionOptOut[0x76] =
{
    //
    // Microsoft OS 2.0 Descriptor Set Header
    //
    0x0A, 0x00, // wLength of MSOS20_SET_HEADER_DESCRIPTOR (10 bytes)
    0x00, 0x00, // wDescriptorType MSOS20_SET_HEADER_DESCRIPTOR
    0x00, 0x00, 0x00, 0x0A, // dwWindowsVersion – 0x10000000 for Windows 10
    0x76, 0x00, // wTotalLength – 0x76(118) bytes
    
    //
    // Microsoft OS 2.0 Registry Value Feature Descriptor
    //
    0x6C, 0x00, // wLength - 0x6C(108) bytes
    0x04, 0x00, // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
    0x04, 0x00, // wPropertyDataType - 4 for REG_DWORD_LITTLE_ENDIAN
    0x5E, 0x00, // wPropertyNameLength – 0x5E(94) bytes
    'D', 0x00, 'K', 0x00, // Property Name – DKEY-{3AB8560B-EFCF-43C1-A7EC-130E46857AF4},2
    'E', 0x00, 'Y', 0x00,
    '-', 0x00, '{', 0x00,
    '3', 0x00, 'A', 0x00,
    'B', 0x00, '8', 0x00,
    '5', 0x00, '6', 0x00,
    '0', 0x00, 'B', 0x00,
    '-', 0x00, 'E', 0x00,
    'F', 0x00, 'C', 0x00,
    'F', 0x00, '-', 0x00,
    '4', 0x00, '3', 0x00,
    'C', 0x00, '1', 0x00,
    '-', 0x00, 'A', 0x00,
    '7', 0x00, 'E', 0x00,
    'C', 0x00, '-', 0x00,
    '1', 0x00, '3', 0x00,
    '0', 0x00, 'E', 0x00,
    '4', 0x00, '6', 0x00,
    '8', 0x00, '5', 0x00,
    '7', 0x00, 'A', 0x00,
    'F', 0x00, '4', 0x00,
    '}', 0x00, ',', 0x00,
    '2', 0x00, 0x00, 0x00,
    0x00, 0x00,
    0x04, 0x00, // wPropertyDataLength – 4 bytes
    0x01, 0x00, 0x00, 0x00 // PropertyData – 0x00000001 (1)
};

Lihat juga

KSPROPERTY_CAMERACONTROL_PRIVACY

KSPROPERTY_CAMERA_CONTROL_S

KSPROPERTY

KSEVENT

KSEVENTDATA

PROPSETID_VIDCAP_CAMERACONTROL