Mini-lecteur de streaming
Note Cette section détaille le pilote de classeStream.sys obsolète. Avec la publication de Microsoft Windows XP, Microsoft prend en charge Stream.sys uniquement pour les pilotes existants. À partir de cette version, Microsoft recommande aux fournisseurs d’envisager de développer de nouveaux pilotes multimédias vidéo ou audio/vidéo à l’aide du modèle de pilote de classe AVStream. Consultez plus d’informations dans la vue d’ensemble d’AVStream. Si vous développez un pilote audio uniquement, vous devez écrire un pilote de miniport audio sous le pilote de classePortcls.sys fourni par Microsoft. Pour plus d’informations, consultez Pilotes audio miniport.
Les fournisseurs peuvent prendre en charge les appareils vidéo uniquement ou audio/vidéo en fournissant un minidriver qui s’exécute sous le pilote de classeStream.sys fourni par Microsoft. Dans cette documentation, les minidrivers fournis par le fournisseur sous Stream.sys sont appelés minidrivers de streaming.
Par instance, les appareils de capture vidéo et les lecteurs DVD peuvent être pris en charge avec les mini-disques de streaming. Pour plus d’informations sur la technologie, consultez Appareils de capture vidéo et mini-lecteurs de décodeur DVD.
Les mini-disques de streaming prennent en charge la sémantique de streaming du noyau. Pour utiliser ce document, les développeurs de pilotes doivent être familiarisés avec les concepts de base de la diffusion en continu du noyau, comme expliqué dans Kernel Streaming.
Le pilote de classe de flux est conçu pour simplifier l’écriture de pilotes matériels pour les périphériques de streaming en gérant de nombreux aspects de l’interaction avec le système d’exploitation.
Le minidriver peut autoriser le pilote de classe de flux à gérer la synchronisation en son nom. Par exemple, le pilote de classe de flux peut éventuellement sérialiser les demandes d’E/S pour le minidriver. Le fait de permettre au pilote de classe de gérer la synchronisation rend le minidriver multiprocesseur sécurisé, mais non réentrant. Cela convient au matériel bas de gamme à moyen-end.
Le pilote de classe synchronise automatiquement les opérations de fichier. Par exemple, l’ouverture d’un flux et d’un appareil sont correctement sérialisées sans le minidriver à l’aide de mutex, de sémaphores ou d’événements.
Le pilote de classe extrait l’implémentation de la sémantique de diffusion en continu du noyau à partir du minidriver.
Le pilote de classe gère toutes les interactions avec le gestionnaire PnP. Par exemple :
- Le pilote de classe crée l’objet d’appareil fonctionnel pour le compte du minidriver.
- Le pilote de classe gère la configuration des ressources (comme la traduction d’adresses de port, la traduction et le mappage de plages de mémoire et la connexion d’interruptions).
- Le pilote de classe gère les IIP PnP, tels que IRP_MN_START_DEVICE ou IRP_MN_STOP_DEVICE.
Toute la gestion de la mémoire tampon de bas niveau est gérée par le pilote de classe :
- Allocation d’un objet d’adaptateur DMA, si nécessaire.
- Mappage des tampons et création de listes de points/regroupements pour DMA.
- Verrouillage et vidage correct des tampons pour DMA et PIO.
Toute la validation des paramètres IOCTL est effectuée par le pilote de classe.
Toutes les requêtes sont chrono timedées par le pilote de classe avec un minuteur de surveillance.
Le minidriver ne crée pas d’objet d’appareil, mais partage l’objet de périphérique du pilote de classe si nécessaire. Cela permet d’économiser des ressources système.
Un seul objet d’appareil est créé par adaptateur. Plusieurs sous-appareils (appelés flux) pris en charge par l’adaptateur sont représentés par des broches de diffusion en continu du noyau.