Oznámení o ochranné krytce/ spínači pro ochranu osobních údajů

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.

diagram znázorňující architekturu oznámení o krytce webkamery pro soukromí

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

Viz také

KSPROPERTY_CAMERACONTROL_PRIVACY

KSPROPERTY_CAMERA_CONTROL_S

KSPROPERTY

KSEVENT

KSEVENTDATA

PROPSETID_VIDCAP_CAMERACONTROL