Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Někteří výrobci fotoaparátů mohou chtít zahrnout fyzické závěrky nebo vypínací spínače, které lze blokovat pomocí fyzického ovládacího prvku a nelze je přepsat softwarem. Tyto funkce se nedoporučují z důvodu rizika neúmyslné aktivace a následného zmatení zákazníka, ale pokud jsou implementovány, musí se řídit pokyny popsanými v uzávěry ochrany soukromí kamer a bezpečnostní přepínače, včetně hlášení stavu uzávěry/přepínače.
Když je závěrka zavřená nebo je aktivní zapínací spínač, fotoaparát bude dál plně funkční pro Windows a aplikace používající existující rozhraní API fotoaparátu, ale obraz nebo video stream bude černý nebo tmavý (nebo nahrazen statickým obrázkem, například obrázkem zařízení se šipkou ukazující na umístění fyzického ovládacího prvku). To vyvolává potenciální potíže, kdy aplikace, které přistupují ke kameře, si neuvědomují, že kamera je zakrytá, a koncoví uživatelé, kteří neúmyslně aktivovali fyzický ovládací prvek, mohou být zmateni, proč jejich kamera nefunguje podle očekávání.
Aby se tyto obavy vyřešily, musí kamery, které implementují uzávěrky nebo vypínače, implementovat mechanismus pro detekci stavu uzávěrky/přepínače a hlásit to operačnímu systému. Toto téma poskytuje pokyny pro OEM a ODM, které budou implementovat tento mechanismus hlášení, a také popisuje ovládací prvky a struktury, které budou vývojáři ovladačů fotoaparátu používat k odesílání stavu spouště/přepínače do operačního systému.
Kromě funkce oznámení o závěrce/přepínači ochrany osobních údajů operační systém implementuje rozpoznávání, kdy je přední kamera (FFC) zakryta víkem zařízení, pokud je akce zavření přepínače víka nastavena na "Nedělat nic", například když se počítač při zavření víka neuspí ani nevypne. Příkladem scénáře může být dokovaný přenosný počítač s externími monitory, které se používají při zavření víka přenosného počítače. Může existovat několik faktorů ve formě zařízení, kdy toto chování není potřeba, proto je níže definován mechanismus pro odhlášení z detekce okluze víka zařízení.
Přehled architektury
Ovládací prvek KSPROPERTY_CAMERACONTROL_PRIVACY se používá, když operační systém dotazuje aktuální stav ovladače kamery. Měla by být použita pouze jako vlastnost typu Get. Vývojáři ovladačů nesmí podporovat vlastnost Set ovládacího prvku KSPROPERTY_CAMERACONTROL_PRIVACY ve svých ovladačích.
Poznámka:
Kamery, které implementují spouštěče ochrany osobních údajů nebo vypínací spínače, musí splňovat požadavky popsané v závěrkách ochrany osobních údajů a vypínacích spínačích.
V ovladači TŘÍDY VIDEA USB (UVC) je ovládací prvek KSPROPERTY_CAMERACONTROL_PRIVACY mapován na vlastnost CT_PRIVACY_CONTROL definovanou ve specifikaci třídy UVC v1.5.
Kromě použití stávajícího ovládacího prvku KSPROPERTYKSPROPERTY_CAMERACONTROL_PRIVACY se zavádí nový tok volání KSEVENT, aby ovladač kamery mohl signalizovat, když se změní stav závěrky/přepínače ochrany osobních údajů kamery, pokud se klienti registrují k tomuto KSEVENT.
KSEVENT se vydává pomocí stejného identifikátoru GUID a ID sady jako KSPROPERTY.
Aby bylo jasné, co je znázorněno v diagramu výše, operační systém očekává, že ovladač AVS implementuje mechanismus, pokud se vývojář ovladačů rozhodne tuto funkci podporovat, aby získal a poslechl změny stavu, které generuje senzor závěrky. Operační systém dotazuje stav prostřednictvím metody KSPROPERTY a vydá čekající KSEVENT , že ovladač bude signalizovat, když se stav závěrky změní. Změna stavu spouště/přepínače nesmí bránit fungování kamery, například aby způsobila chybovou situaci.
POZNÁMKA: Pokud ovladač AVS tuto funkci podporuje, ale základní hardware ne, ovladač AVS vrátí chybu, pokud operační systém vydá registraci KSEVENT .
Metody snímání a reportování
Některé kamery cítí stav závěrky pomocí algoritmu analýzy pixelů běžícího ve firmwaru isP (Image Signal Processor). To omezuje ty kamery, které musí aktivně streamovat, aby detekovaly a hlásily stav závěrky. Další podrobnosti o tom, kdy a jak fotoaparát musí hlásit stav spouště/spínače, najdete v tématu snímání stavu spouště a hlášení .
Podobně vývojáři aplikací využívající signál okluze kamery nesmí využívat hlášený stav závěrky, ledaže fotoaparát aktivně streamuje. Další podrobnosti najdete v části třída CameraOcclusionInfo.
KSPROPERTY
Souhrnná tabulka využití (KSPROPERTY)
| Získat | Nastavit | Cíl | Typ popisovače vlastnosti | Typ hodnoty vlastnosti |
|---|---|---|---|---|
| Ano | Ne | Filtrovat | KSPROPERTY_CAMERACONTROL_S | Dlouhý |
Hodnota vlastnosti (data operace) je LONG, která určuje, jestli je povolený nebo zakázaný režim ochrany osobních údajů:
Hodnota 0 značí, že snímač fotoaparátu dokáže zachytit snímky videa.
Hodnota 1 značí, že snímači fotoaparátu je zabráněno pořizovat videozáznamy.
Struktura KSPROPERTY_CAMERA_CONTROL_S musí být vyplněna následujícím způsobem:
| Člen struktury | Hodnota |
|---|---|
| KSPROPERTY.Set | Musí být PROPSETID_VIDCAP_CAMERACONTROL |
| KSPROPERTY.Id | Musí být KSPROPERTY_CAMERACONTROL_PRIVACY |
| KSPROPERTY. Vlajky | Musí být KSPROPERTY_TYPE_GET |
| Hodnota | Inicializujte na 0 |
| Vlajky | Ignorováno, nastaveno na 0 |
| možnosti | Ignorováno, nastaveno na 0 |
KSEVENT
Souhrnná tabulka využití (KSEVENT)
| Získat | Nastavit | Cíl | Typ popisovače události | Typ hodnoty události |
|---|---|---|---|---|
| Ne | Ano | Filtrovat | KSEVENT | KSEVENTDATA |
Struktura KSEVENT musí být vyplněna následujícím způsobem:
| Člen struktury | Hodnota |
|---|---|
| Nastavit | Musí být PROPSETID_VIDCAP_CAMERACONTROL |
| Id | Musí být KSPROPERTY_CAMERACONTROL_PRIVACY |
| Vlajky | KSEVENT_TYPE_ENABLE |
Struktura KSEVENTDATA musí být vyplněna následujícím způsobem:
| Člen struktury | Hodnota |
|---|---|
| TypOznámení | Musí být KSEVENTF_EVENT_HANDLE |
Vypnutí detekce okluze víka zařízení
Pokud chcete zakázat detekci okluze víka zařízení, můžou OEM definovat následující klíč vlastnosti zařízení:
DEVPROPKEY
DEVPROPGUID = {3AB8560B-EFCF-43C1-A7EC-130E46857AF4}
DEVPROPID = 2
DEVPROPTYPE = DEVPROP_TYPE_UINT32
PropertyBuffer = (ULONG) 1
PropertyBufferSize = sizeof(ULONG)
Poznámka:
Nastavení hodnoty PropertyBuffer na hodnotu 0 je stejné jako nedefinování klíče vlastnosti zařízení vůbec.
Klíč vlastnosti zařízení lze poskytnout buď v souboru INF ovladače pomocí AddProperty , nebo pomocí popisovače MS OS, pokud neexistuje žádný soubor INF, například fotoaparát USB používající ovladač fotoaparátu doručené pošty UVC.
Příklad INF funkce AddProperty
[OptOutLidOcclusionSampleAddPropertySection]
{3AB8560B-EFCF-43C1-A7EC-130E46857AF4},2,7,,1
Příklad popisovače 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)
};