Streaming States

Each stream provided by the minidriver exists in one of four states: KSSTATE_STOP, KSSTATE_ACQUIRE, KSSTATE_PAUSE, or KSSTATE_RUN. Upon initialization, the stream is, by default, in the KSSTATE_STOP state. Transitions to the other states are made when the Stream class interface sends an SRB_SET_STREAM_STATE request to the minidriver. The following table identifies and describes the four stream states.

State Description

KSSTATE_STOP

When the stream state is stopped, the minidriver uses the absolute minimum of resources, and there are no outstanding data SRBs in the minidriver's queue.

KSSTATE_ACQUIRE

When the stream state is acquiring resources, the minidriver allocates all needed resources, such as bandwidth on USB and IEEE 1394.

KSSTATE_PAUSE

When the stream state is paused, the minidriver is prepared to instantly make a transition to KSSTATE_RUN.

KSSTATE_RUN

When the stream state is streaming, the minidriver fills buffers and completes SRBs using CompleteStreamSRB.