Eventi KS

Se si scrive un minidriver AVStream, vedere Gestione degli eventi in AVStream.

I set di eventi sono gruppi di eventi correlati per i quali un listener può richiedere la notifica. Ad esempio, un listener può registrarsi per ricevere una notifica delle modifiche dello stato del dispositivo o delle modifiche nella posizione del flusso. Quando si verifica un evento, lo streaming del kernel invia una notifica a tutti i client che hanno registrato per questo evento.

I minidriver descrivono come supportano un evento fornendo una struttura KSEVENT_ITEM che contiene puntatori alla gestione delle routine.

I listener si registrano per la notifica chiamando la routine proxy di streaming del kernel KsSynchronousDeviceControl con il codice di controllo IOCTL_KS_ENABLE_EVENT e i puntatori a KSEVENT e KSEVENTDATA.structures.

La richiesta di IOCTL_KS_DISABLE_EVENT disabilita un evento specificato. Lo stesso puntatore usato per abilitare l'evento deve essere usato per disabilitarlo. Questo puntatore identifica in modo univoco l'evento. Facoltativamente, il client può specificare un puntatore NULL e una lunghezza pari a zero per disabilitare tutti gli eventi attivi per il client.

Tutti i set di eventi devono supportare il flag di KSEVENT_TYPE_BASICSUPPORT. Per un elenco dei flag di evento disponibili, fare riferimento a KSEVENT .

Alcuni tipi di evento richiedono parametri aggiuntivi per la registrazione per la notifica degli eventi. Ad esempio, l'evento KSEVENT_CLOCK_POSITION_MARK in un orologio viene attivato quando l'orologio raggiunge un determinato timestamp. Di conseguenza, i client che si registrano per ricevere una notifica di questo evento devono specificare il timestamp in corrispondenza del quale attivare l'evento.

In tal caso, un minidriver passa parametri di dati aggiuntivi nel buffer di dati dopo la struttura KSEVENTDATA . I minidriver che supportano un tipo di evento di questo tipo usano una struttura dati estesa, di cui il primo membro è di tipo KSEVENTDATA, per contenere i dati di notifica.