流指针的锁定与解锁状态
2025-04-17
0
0
数据流指针有两种状态:解锁态和锁定态。
锁定态的流提针指保证了其引用的数据在队列中,锁定态的数据流指针无法被取消掉。
如果被取消掉,系统会自动前推流指针。
未锁定态的流指针沅法保证其引用的数据在队列中。通过持有解锁的流指针,微型驱动程序可以保留数据指针,但仍然允许取消帧。
可以访问由未锁定的流指针指向的数据。如果您在KsStreamPointerClone中提供的CancelCallback例程调用KsStreamPointerDelete,则应同步CancelCallback及其执行的任何数据访问。微型驱动程序必须确保取消回调例程在另一个线程使用流指针时不会删除它。如果取消回调例程不调用KsStreamPointerDelete,则可能不需要同步。
- 要锁定流指针,请调用KsStreamPointerLock。
- 要解锁流指针,请调用KsStreamPointerUnlock。
当IRP被取消时,AVStream会为指向IRP内帧的所有未锁定流指针调用取消回调。
位于前缘和后缘流指针是特殊的数据流反映针,不能删除。
仅当前缘和后缘流指针未被使用时,才解锁它们。