Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Alcuni produttori di fotocamere potrebbero voler includere otturatori fisici o interruttori di spegnimento che possono bloccare la fotocamera utilizzando un controllo fisico che non può essere bypassato dal software. Queste funzionalità non sono incoraggiate a causa del rischio di attivazione accidentale e conseguente confusione dei clienti, ma se implementate, devono seguire le indicazioni descritte in Camera privacy shutters and kill switch, incluso per segnalare lo stato dell'otturatore/interruttore.
Quando un otturatore è chiuso o un interruttore di terminazione è attivo, la fotocamera continua a essere completamente funzionale a Windows e alle applicazioni che usano le API della fotocamera esistenti, ma l'immagine o il flusso video sarà nero o scuro (o sostituito con un'immagine statica, ad esempio un'immagine del dispositivo con una freccia che punta alla posizione del controllo fisico). Ciò genera potenziali problemi in cui le applicazioni che accedono alla fotocamera non sono consapevoli che la fotocamera è occlusa e gli utenti finali che involontariamente attivato il controllo fisico potrebbero essere confusi sul motivo per cui la fotocamera non funziona come previsto.
Per risolvere questi problemi, le telecamere che implementano otturatori o interruttori kill devono implementare un meccanismo per rilevare lo stato dell'otturatore/interruttore e segnalarlo al sistema operativo. Questo argomento fornisce indicazioni per gli OEM e gli ODM che implementeranno questo meccanismo di creazione di report e descrive anche i controlli e le strutture che gli sviluppatori di driver di fotocamera useranno per pubblicare lo stato dell'otturatore/interruttore nel sistema operativo.
Oltre alla funzionalità di notifica dell'otturatore/interruttore della privacy, il sistema operativo implementa il rilevamento dell'occlusione della fotocamera in cui una fotocamera anteriore (FFC) è bloccata dal coperchio del dispositivo quando l'azione di chiusura del coperchio è impostata su "Non fare nulla", ad esempio, un computer non andrà a dormire o spegnere quando il coperchio viene chiuso. Uno scenario di esempio potrebbe essere un portatile ancorato con monitor esterni in uso mentre il coperchio del portatile è chiuso. Potrebbero esserci alcuni fattori di forma del dispositivo in cui questo comportamento non è voluto, pertanto, un meccanismo per rifiutare esplicitamente il rilevamento dell'occlusione del coperchio del dispositivo è definito di seguito.
Panoramica dell'architettura
Il controllo KSPROPERTY_CAMERACONTROL_PRIVACY viene usato quando il sistema operativo esegue una query sullo stato corrente da un driver della fotocamera. Deve essere usato solo come proprietà Get. Gli sviluppatori di driver non devono supportare la proprietà di controllo Set KSPROPERTY_CAMERACONTROL_PRIVACY nei loro driver.
Annotazioni
Le telecamere che implementano otturatori di privacy o interruttori devono essere conformi ai requisiti descritti in otturatori di privacy delle telecamere e interruttori di spegnimento.
Nel driver USB Video Class (UVC) il controllo KSPROPERTY_CAMERACONTROL_PRIVACY viene mappato alla proprietà CT_PRIVACY_CONTROL definita nella specifica della classe UVC v1.5.
Oltre all'uso del controllo KSPROPERTY esistente, KSPROPERTY_CAMERACONTROL_PRIVACY, viene introdotto un nuovo flusso di chiamata KSEVENT in modo che il driver della fotocamera possa segnalare quando lo stato dell'otturatore/interruttore della fotocamera viene modificato se sono presenti client che si registrano per tale KSEVENT.
KSEVENT viene emesso usando lo stesso Set GUID e Id usato da KSPROPERTY.
Per chiarire cosa è illustrato nel diagramma precedente, il sistema operativo prevede che il driver AVS implementi il meccanismo, se lo sviluppatore del driver sceglie di supportare questa funzionalità, per ottenere e ascoltare le modifiche dello stato che il sensore di otturatore sta generando. Il sistema operativo esegue una query sullo stato tramite il metodo get KSPROPERTY e rilascia un KSEVENT in attesa che il driver segnalerà quando viene modificato lo stato dell'otturatore. La modifica dello stato dell'otturatore/interruttore non deve impedire il funzionamento della fotocamera, ad esempio per causare una situazione di errore.
NOTA: Se il driver AVS supporta questa funzionalità, ma l'hardware sottostante non lo fa, il driver AVS restituirà un errore di non supporto quando il sistema operativo emette la registrazione KSEVENT.
Metodi di rilevamento e reportistica
Alcune fotocamere rilevano lo stato dell'otturatore usando un algoritmo di analisi dei pixel in esecuzione nel firmware ISP (Image Signal Processor). Ciò impone una limitazione a quelle fotocamere che la fotocamera deve essere attivamente in streaming per percepire e segnalare lo stato dell'otturatore. Per altri dettagli su quando e su come la fotocamera deve segnalare lo stato dell'otturatore o dell'interruttore, vedi Rilevamento dello stato dell'otturatore e segnalazione .
Analogamente, gli sviluppatori di applicazioni che usano il segnale di occlusione della fotocamera non devono utilizzare lo stato di otturatore segnalato, a meno che la fotocamera non sia attivamente in streaming. Per altri dettagli, vedere Classe CameraOcclusionInfo .
KSPROPERTY
Tabella di riepilogo utilizzo (KSPROPERTY)
| GET | Imposta | Destinazione | Tipo descrittore di proprietà | Tipo di valore della proprietà |
|---|---|---|---|---|
| Sì | NO | Filtro | KSPROPERTY_CAMERACONTROL_S | LUNGO |
Il valore della proprietà (dati dell'operazione) è un valore LONG che specifica se la modalità privacy è abilitata o disabilitata:
Il valore 0 indica che il sensore della fotocamera può acquisire immagini video
Il valore 1 indica che il sensore della fotocamera non è in grado di acquisire immagini video
La struttura KSPROPERTY_CAMERA_CONTROL_S deve essere riempita nel modo seguente:
| Membro della struttura | Valore |
|---|---|
| KSPROPERTY.Set | Deve essere PROPSETID_VIDCAP_CAMERACONTROL |
| KSPROPERTY.Id | Deve essere KSPROPERTY_CAMERACONTROL_PRIVACY |
| KSPROPERTY.Flags | Deve essere KSPROPERTY_TYPE_GET |
| Valore | Inizializzare a 0 |
| Bandiere | Ignorato, impostato su 0 |
| Funzionalità | Ignorato, impostato su 0 |
KSEVENT
Tabella di riepilogo utilizzo (KSEVENT)
| GET | Imposta | Destinazione | Tipo di descrittore di evento | Tipo di valore dell'evento |
|---|---|---|---|---|
| NO | Sì | Filtro | KSEVENT | KSEVENTDATA |
La struttura KSEVENT deve essere riempita nel modo seguente:
| Membro della struttura | Valore |
|---|---|
| Imposta | Deve essere PROPSETID_VIDCAP_CAMERACONTROL |
| id | Deve essere KSPROPERTY_CAMERACONTROL_PRIVACY |
| Bandiere | KSEVENT_TYPE_ENABLE |
La struttura KSEVENTDATA deve essere compilata nel modo seguente:
| Membro della struttura | Valore |
|---|---|
| NotificationType | Deve essere KSEVENTF_EVENT_HANDLE |
Rifiutare esplicitamente il rilevamento dell'occlusione del coperchio del dispositivo
Per rifiutare esplicitamente il rilevamento dell'occlusione del coperchio del dispositivo, gli OEM possono definire la chiave della proprietà del dispositivo seguente:
DEVPROPKEY
DEVPROPGUID = {3AB8560B-EFCF-43C1-A7EC-130E46857AF4}
DEVPROPID = 2
DEVPROPTYPE = DEVPROP_TYPE_UINT32
PropertyBuffer = (ULONG) 1
PropertyBufferSize = sizeof(ULONG)
Annotazioni
L'impostazione del valore PropertyBuffer su 0 equivale a non definire affatto la chiave della proprietà del dispositivo.
La chiave della proprietà del dispositivo può essere fornita in un file INF del driver usando AddProperty o usando un descrittore del sistema operativo MS se non è presente alcun file INF, ad esempio una fotocamera USB che usa il driver della fotocamera della posta in arrivo UVC.
Esempio di INF AddProperty
[OptOutLidOcclusionSampleAddPropertySection]
{3AB8560B-EFCF-43C1-A7EC-130E46857AF4},2,7,,1
Esempio di descrittore del sistema operativo MS
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)
};