Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Usa el mutex del dispositivo para sincronizar los objetos de la jerarquía desde el dispositivo hasta los filtros. Cada dispositivo AVStream tiene un único mutex de dispositivo asociado. La creación y destrucción de tanto las fábricas de filtros como de los filtros se sincronizan con este mutex. Ciertas operaciones de Plug and Play y administración de energía también se sincronizan con este mutex. El minidriver se centra en dos problemas principales con respecto al mutex del dispositivo.
Se garantiza que la jerarquía de objetos solo es estable desde el dispositivo hasta los filtros individuales si se mantiene la exclusión mutua del dispositivo. Como resultado, el minidriver debe obtener la exclusión mutua del dispositivo antes de crear manualmente generadores de filtros mediante una llamada a KsCreateFilterFactory. El minidriver también debe obtener el bloqueo mutuo del dispositivo antes de recorrer la estructura de objetos para hacer llamadas a las funciones KsXxxGetFirstChildXxx y KsXxxGetNextSiblingXxx.
AVStream mantiene el mutex del dispositivo en nombre del minidriver cuando recibe las siguientes solicitudes:
Notificaciones de suspensión y reactivación en filtros y pines. Consulte KsFilterRegisterPowerCallbacks y KsPinRegisterPowerCallbacks.
Es importante tener en cuenta que el mutex del dispositivo no se puede obtener de forma recursiva. Considere el ejemplo siguiente. AVStream recibe una notificación de suspensión. Como se ha descrito anteriormente, toma el mutex del dispositivo para el minidriver. Si AVStream llama a una rutina de devolución de llamada proporcionada por el minidriver en el contexto del subproceso A, el minidriver no debe intentar obtener posteriormente el mutex del dispositivo en el subproceso A. Si lo hace, el subproceso A se interbloquea con sí mismo.
AVStream a menudo obtiene el mutex de control de filtro mientras el mutex del dispositivo ya se mantiene. Por lo tanto, como regla general, un subproceso que ha tomado un mutex de control de filtro debería evitar posteriormente tomar el mutex del dispositivo.
Para manipular el mutex del dispositivo, utilice las siguientes funciones: