Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
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)
};