AVStream 中的设备互斥体

使用设备互斥体将层次结构中的对象从设备向下同步到筛选器。 每个 AVStream 设备都有一个关联的设备互斥体。 筛选器工厂和筛选器的创建和销毁都与此互斥体同步。 某些即插即用和电源管理操作也与该互斥体同步。 微型驱动程序侧重于设备互斥体相关的两个主要问题。

仅当保留设备互斥体时,才能保证对象层次结构稳定, 设备向下到单个筛选器。 因此,微型驱动程序必须先获取设备互斥体,然后才能通过调用 KsCreateFilterFactory 手动创建筛选器工厂。 微型驱动程序必须先获取设备互斥体,然后调用 KsXxxGetFirstChildXxxKsXxxGetNextSiblingXxx 函数遍历对象层次结构。

AVStream 在收到以下请求时代表微型驱动程序管理设备互斥体:

请务必注意,无法以递归方式获取设备互斥体。 请考虑以下示例。 AVStream 收到睡眠通知。 如上所述,它代表微型驱动程序锁定设备互斥体。 如果 AVStream 然后在线程 A 的上下文中调用微型驱动程序提供的回调函数,则微型驱动程序不得随后尝试在线程 A 中获取设备互斥锁。这样做会导致线程 A 自行死锁。

AVStream 经常在设备互斥锁已持有的情况下获取筛选器控制互斥锁。 因此,作为一般规则,采用筛选器控制互斥体的线程不应随后采用设备互斥体。

若要操作设备互斥体,请使用以下函数:

KsAcquireDeviceKsReleaseDevice