Streaming Minidrivers
Nota En esta sección se detalla el controlador de clase Stream.sys obsoleto. Con el lanzamiento de Microsoft Windows XP, Microsoft solo admite Stream.sys para controladores existentes. A partir de esta versión, Microsoft recomienda que los proveedores consideren desarrollar nuevos controladores multimedia de vídeo o audio o vídeo mediante el modelo de controlador de clase AVStream. Consulte los detalles de la información general de AVStream. Si desarrolla un controlador de solo audio, debe escribir un controlador de minipuerto de audio en el controlador de clase Portcls.sys proporcionado por Microsoft. Para obtener más información, consulte Controladores de minipuerto de audio.
Los proveedores pueden admitir dispositivos de audio y vídeo o de solo vídeo proporcionando un minidrive que se ejecuta en el controlador de clase Stream.sys proporcionado por Microsoft. En esta documentación, los minidrivers proporcionados por el proveedor en Stream.sys se conocen como minidrivers de streaming.
Por ejemplo, los dispositivos de captura de vídeo y los reproductores de DVD se pueden admitir con minidrivers de streaming. Para obtener información específica de la tecnología, consulte Video Capture Devices and DVD Decoder Minidrivers(Dispositivos de captura de vídeo y Minidrivers de descodificador de DVD).
Los minidrivers de streaming admiten la semántica de streaming del kernel. Para usar este documento, los desarrolladores de controladores deben estar familiarizados con los conceptos básicos de streaming del kernel, como se explica en Streaming de kernel.
El controlador de clase stream está diseñado para simplificar la escritura de controladores de hardware para dispositivos de streaming mediante el control de muchos de los aspectos de la interacción con el sistema operativo.
El minidriver puede permitir que el controlador de clase de secuencia controle la sincronización en su nombre. Por ejemplo, el controlador de clase de secuencia puede serializar opcionalmente las solicitudes de E/S para el minidriver. Permitir que el controlador de clase controle la sincronización hace que el minidriver sea seguro para varios procesadores, pero noreentrant. Esto es adecuado para hardware de gama baja a medio.
El controlador de clase sincroniza automáticamente las operaciones de archivo. Por ejemplo, la apertura de una secuencia y un dispositivo se serializan correctamente sin el minidriver mediante exclusión mutua, semáforos o eventos.
El controlador de clase abstrae la implementación de la semántica de streaming de kernel del minidriver.
El controlador de clase controla toda la interacción con el administrador de PnP. Por ejemplo:
- El controlador de clase crea el objeto de dispositivo funcional en nombre del minidriver.
- El controlador de clase administra la configuración de recursos (por ejemplo, la traducción de direcciones de puerto, la traducción y la asignación de intervalos de memoria y las interrupciones de conexión).
- El controlador de clase controla los IRP de PnP, como IRP_MN_START_DEVICE o IRP_MN_STOP_DEVICE.
El controlador de clase controla toda la administración de búferes de bajo nivel:
- Asignar un objeto de adaptador DMA, si es necesario.
- Asignación de búferes y creación de listas de dispersión y recopilación para DMA.
- Búferes de bloqueo y vaciado correctos para DMA y PIO.
El controlador de clase realiza toda la validación de parámetros IOCTL.
El controlador de clase ha temporizador todas las solicitudes con un temporizador de guardián.
El minidriver no crea un objeto de dispositivo, pero comparte el objeto de dispositivo del controlador de clase según sea necesario. Esto guarda los recursos del sistema.
Solo se crea un objeto de dispositivo por adaptador. Varios subdispositivos (denominados flujos) admitidos por el adaptador se representan mediante patillas de streaming del kernel.