Gizlilik kapatıcı/düğme bildirimi

Bazı kamera üreticileri, yazılım tarafından geçersiz kılınamayan fiziksel bir denetim kullanarak kamerayı engelleyebilecek fiziksel deklanşörler veya sonlandırma anahtarları eklemek isteyebilir. Bu özellikler, yanlışlıkla etkinleştirme ve müşteri karışıklığına yol açma riski nedeniyle önerilmez, ancak uygulanırsa deklanşörün/anahtarın durumunu bildirmek de dahil olmak üzere Kamera gizlilik perdeleri ve sonlandırma anahtarları bölümünde açıklanan yönergeleri izlemeleri gerekir.

Deklanşör kapatıldığında veya sonlandırma anahtarı etkin olduğunda, kamera mevcut kamera API'lerini kullanan Windows ve uygulamalar için tamamen işlevsel olmaya devam eder, ancak görüntü veya video akışı siyah veya koyu olur (ya da fiziksel denetimin konumunu gösteren bir okla cihazın resmi gibi statik bir görüntüyle değiştirilir). Bu, kameraya erişen uygulamaların kameranın tıkandığını fark etmemesi ve kasıtsız olarak fiziksel denetimi etkinleştiren son kullanıcıların kameralarının neden beklendiği gibi çalışmadığı konusunda kafalarının karışmasına neden olabilir.

Bu endişeleri gidermek için, deklanşör veya sonlandırma anahtarları uygulayan kameraların deklanşör/anahtar durumunu algılamak ve işletim sistemine raporlamak için bir mekanizma uygulaması gerekir. Bu konu başlığında, bu raporlama mekanizmasını uygulayacak OEM'ler ve ODM'ler için rehberlik sağlanır ve kamera sürücüsü geliştiricilerinin deklanşör/geçiş durumunu işletim sisteminde yayımlamak için kullanacağı denetimler ve yapılar açıklanmaktadır.

Gizlilik deklanşör/anahtar bildirim özelliğine ek olarak, işletim sistemi, kapak anahtarı kapatma eylemi "Hiçbir Şey Yapma" olarak ayarlandığında ön yüz kamerasının (FFC) cihaz kapağı tarafından kapatıldığı kamera kapatma algılamasını uygular. Örneğin, kapak kapatıldığında bilgisayar uyku moduna geçmez veya kapanmaz. Örnek bir senaryo, dizüstü bilgisayarın kapağı kapalıyken harici monitörlerin kullanıldığı yerleşik bir dizüstü bilgisayar olabilir. Bu davranışın istenmediği bazı cihaz formu faktörleri olabilir, bu nedenle cihaz kapağı tıkanıklık algılamasını geri çevirme mekanizması aşağıda tanımlanmıştır.

Mimariye genel bakış

KSPROPERTY_CAMERACONTROL_PRIVACY denetimi, işletim sistemi geçerli durumu bir kamera sürücüsünden sorgularken kullanılır. Yalnızca Get özelliği olarak kullanılmalıdır. Sürücü geliştiricilerin sürücülerinde KSPROPERTY_CAMERACONTROL_PRIVACY denetimi Set özelliğini desteklememesi gerekir.

Uyarı

Gizlilik panjurları veya sonlandırma anahtarları uygulayan kameralar , Kamera gizlilik perdeleri ve sonlandırma anahtarları bölümünde açıklanan gereksinimlere uygun olmalıdır.

USB Video Sınıfı (UVC) sürücüsünde KSPROPERTY_CAMERACONTROL_PRIVACY denetimi, UVC v1.5 Sınıf Belirtiminde tanımlanan CT_PRIVACY_CONTROL özelliğine eşlenir.

gizlilik deklanşörü bildirim mimarisini gösteren diyagram

Mevcut KSPROPERTY denetiminin kullanımına ek olarak, KSPROPERTY_CAMERACONTROL_PRIVACY yeni bir KSEVENT çağrı akışı tanıtılır, böylece söz konusu KSEVENT'e kaydolan istemciler varsa kamera sürücüsünün kameranın gizlilik deklanşör/anahtar durumu değiştiğinde sinyal gönderebilmesi sağlanır.

KSEVENT, KSPROPERTY'nin kullandığı küme GUID'si ve kimliği kullanılarak verilir.

Yukarıdaki diyagramda gösterilenleri netleştirmek için işletim sistemi, sürücü geliştiricisi bu özelliği desteklemeyi seçerse deklanşör algılayıcısının oluşturduğunu durum değişikliklerini almak ve dinlemek için AVS sürücüsünün mekanizma uygulamasını bekler. İşletim sistemi, KSPROPERTY get yöntemi aracılığıyla durumu sorgular ve deklanşör durumu değiştiğinde sürücü tarafından tetiklenecek bir KSEVENT bekletir. Deklanşör/anahtar durumu değişikliği, örneğin bir hata durumuna neden olmak için kameranın çalışmasını engellememelidir.

NOT: AVS sürücüsü bu özelliği destekliyorsa ancak temel donanım desteklemiyorsa, işletim sistemi KSEVENT kaydını düzenlediğinde AVS sürücüsü desteklenmeyen bir hata döndürür.

Algılama ve Raporlama yöntemleri

Bazı kameralar Görüntü Sinyali İşlemcisi (ISS) üretici yazılımında çalışan bir piksel analizi algoritması kullanarak deklanşör durumunu algılar. Bu, kameranın deklanşör durumunu algılamak ve raporlamak için aktif olarak akış yapması gereken kameralara bir sınırlama getirmektedir. Kameranın deklanşör /anahtar durumunu ne zaman ve nasıl bildirmesi gerektiği hakkında daha fazla bilgi için bkz. Deklanşör durumu algılama ve raporlama.

Benzer şekilde, kamera kapatma sinyalini kullanan uygulama geliştiricilerin, kamera etkin olarak akış yapmadığı sürece bildirilen deklanşör durumunu kullanmaması gerekir. Daha fazla ayrıntı için bkz. CameraOcclusionInfo Sınıfı .

KSPROPERTY

Kullanım Özeti Tablosu (KSPROPERTY)

Edinin Ayarla Hedef Özellik tanımlayıcı türü Özellik değeri türü
Evet Hayı Filtre KSPROPERTY_CAMERACONTROL_S UZUN

Özellik değeri (işlem verileri), gizlilik modunun etkin mi yoksa devre dışı mı olduğunu belirten bir LONG değeridir:

  • 0 değeri, kamera algılayıcısının video görüntüleri yakalayabildiğini gösterir

  • 1 değeri, kamera algılayıcısının video görüntülerini yakalamasının engellendiğini gösterir

KSPROPERTY_CAMERA_CONTROL_S yapısı aşağıdaki gibi doldurulmalıdır:

Yapı üyesi Değer
KSPROPERTY.Set PROPSETID_VIDCAP_CAMERACONTROL olması gerekir
KSPROPERTY.Id KSPROPERTY_CAMERACONTROL_PRIVACY olmalıdır
KSPROPERTY.Ayarlar KSPROPERTY_TYPE_GET olması gereklidir.
Değer 0 olarak başlat
Bayrakları Yoksayıldı, 0 olarak ayarlandı
Özellikleri Yoksayıldı, 0 olarak ayarlandı

KSEVENT

Kullanım Özeti Tablosu (KSEVENT)

Edinin Ayarla Hedef Olay tanımlayıcı türü Olay değeri türü
Hayı Evet Filtre KSEVENT KSEVENTDATA

KSEVENT yapısı aşağıdaki gibi doldurulmalıdır:

Yapı üyesi Değer
Ayarla PROPSETID_VIDCAP_CAMERACONTROL olması gerekir
Kimlik KSPROPERTY_CAMERACONTROL_PRIVACY olmalıdır
Bayrakları KSEVENT_TYPE_ENABLE

KSEVENTDATA yapısı aşağıdaki gibi doldurulmalıdır:

Yapı üyesi Değer
NotificationType KSEVENTF_EVENT_HANDLE olmalıdır

Cihaz kapağı kapama algılamasını devre dışı bırakma

OEM'ler, cihaz kapağı tıkanıklık algılamasını geri çevirmek için aşağıdaki Cihaz Özellik Anahtarını tanımlayabilir:

DEVPROPKEY

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

    DEVPROPID = 2

DEVPROPTYPE = DEVPROP_TYPE_UINT32

PropertyBuffer = (ULONG) 1

PropertyBufferSize = sizeof(ULONG)

Uyarı

PropertyBuffer değerini 0 olarak ayarlamak, Cihaz Özellik Anahtarını tanımlamamakla aynıdır.

Cihaz Özellik Anahtarı, bir sürücü INF dosyasında AddProperty kullanılarak ya da INF dosyası yoksa bir MS OS tanımlayıcısı kullanılarak sağlanabilir, örneğin, UVC gelen kutusu kamera sürücüsünü kullanan bir USB kamera.

INF AddProperty örneği

[OptOutLidOcclusionSampleAddPropertySection]

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

MS işletim sistemi tanımlayıcısı örneği

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

Ayrıca bakınız

KSPROPERTY_CAMERACONTROL_PRIVACY

KSPROPERTY_CAMERA_CONTROL_S

KSPROPERTY

KSEVENT

KSEVENTDATA

PROPSETID_VIDCAP_CAMERACONTROL