Transizioni di stato

Per garantire l'allocazione ordinata delle risorse, è consentito solo un subset delle possibili transizioni dello stato di streaming del kernel. Nella tabella seguente sono elencate le transizioni consentite insieme alle attività eseguite da un minidriver di classe Stream durante tali transizioni.

Transizione Descrizione

Arrestare la sospensione

Allocare le risorse. Gli SRB di lettura vengono accodati dopo aver completato la transizione alla KSSTATE_PAUSE .

Sospendere l'esecuzione

Iniziare lo streaming.

Eseguire per sospendere

Arrestare lo streaming. Gli SRB di lettura in sospeso rimangono nella coda gestita dal minidriver.

Sospendere l'arresto

Deallocare le risorse e completare tutti gli SRB di lettura in sospeso. Gli SRB che non sono stati riempiti con un'immagine vengono completati con lunghezza zero nel membro DataUsed della struttura KSSTREAM_HEADER .

Nota : le transizioni possono essere scorrere più volte tra gli stati KSSTATE_PAUSE e KSSTATE_RUN prima di tornare allo stato di KSSTATE_STOP . I minidriver di acquisizione video devono prevedere transizioni come:

KSSTATE_STOP ->KSSTATE_ACQUIRE -KSSTATE_PAUSE ->KSSTATE_RUN ->>>>KSSTATE_PAUSE -KSSTATE_RUN -KSSTATE_PAUSE - KSSTATE_STOP>

Quando un flusso si trova in uno stato di KSSTATE_STOP , il minidriver deve completare immediatamente tutti gli SRB in lettura dati in sospeso.

Poiché un'applicazione in modalità utente può terminare in modo imprevisto durante lo streaming, tutti i minidriver della classe Stream devono accettare ed elaborare una richiesta di SRB_CLOSE_STREAM dall'interfaccia della classe Stream in qualsiasi momento. Prima che l'interfaccia della classe Stream invii SRB_CLOSE_STREAM a un minidriver, annulla tutti i buffer in sospeso tramite la routine HwCancelPacket del minidriver. Si noti che lo stato del flusso non può essere impostato su KSSTATE_STOP prima che l'applicazione venga terminata.

Non aggiornare i membri PictureNumber o DropCount di KS_FRAME_INFO, KS_VBI_FRAME_INFOo KSPROPERTY_DROPPEDFRAMES_CURRENT_S durante la transizione da KSSTATE_PAUSE a KSSTATE_RUNo KSSTATE_RUN a KSSTATE_PAUSE. Per altre informazioni, vedere Acquisizione di video.