锁定和解锁流指针

每个流指针都保持锁定状态:锁定或解锁。

锁定的流指针保证引用队列中的数据。 无法取消锁定的流指针指向的数据帧。 因此,微型驱动程序应最大程度地减少持有锁定的流指针所花费的时间。

不保证未锁定的流指针引用队列中的数据帧。 通过按住未锁定的流指针,微型驱动程序可以保留数据指针,但仍允许取消帧。

可以访问未锁定流指针指向的数据。 如果在 KsStreamPointerClone 中提供的 CancelCallback 例程调用 KsStreamPointerDelete,则应同步 CancelCallback 及其执行的任何数据访问。 微型驱动程序必须确保取消回调例程不会删除流指针,而另一个线程正在使用流指针。

如果取消回调例程不调用 KsStreamPointerDelete,则可能不需要同步。

若要锁定流指针,请调用 KsStreamPointerLock。 若要解锁流指针,请调用 KsStreamPointerUnlock

取消 IRP 时,AVStream 针对指向 IRP 中帧的所有未锁定流指针调用取消回调。

仅当前导和尾随边缘流指针未使用时,才解锁它们。