Pilotes Windows universels pour l'audio

Dans Windows 10, vous pouvez écrire un pilote audio universel qui fonctionnera sur de nombreux types de matériel. Cette rubrique décrit les avantages de cette approche ainsi que les différences entre les plateformes. Outre les pilotes Windows universels pour l’audio, Windows continue de prendre en charge les technologies de pilotes audio précédentes, telles que WDM.

Prise en main des pilotes Windows universels pour audio

Les IVS peuvent développer un pilote Windows universel qui fonctionne sur tous les appareils (ordinateurs de bureau, ordinateurs portables, tablettes, téléphones). Cela peut réduire le temps de développement et le coût de développement initial et la maintenance ultérieure du code.

Ces outils sont disponibles pour développer des pilotes Windows universels :

  • Visual Studio 2015 : Définissez « Plateforme cible » sur « Universal ». Pour plus d’informations sur la configuration de l’environnement de développement de pilotes, consultez la documentation du développeur de matériel Windows et la création d’un pilote avec wdK.

  • ApiValidator Tool : vous pouvez utiliser l’outil ApiValidator.exe pour vérifier que les API que vos appels de pilote sont valides pour un pilote Windows universel. Cet outil fait partie du Kit de pilotes Windows (WDK) pour Windows 10 et s’exécute automatiquement si vous utilisez Visual Studio 2015. Pour plus d’informations, consultez APIValidator.

  • Documentation de référence DDI : la documentation de référence DDI est mise à jour pour indiquer les DDIS prises en charge par les pilotes Windows universels. Pour plus d’informations, consultez Référence sur les appareils audio.

Créer un pilote audio universel

Pour obtenir des instructions pas à pas, consultez la documentation du développeur de matériel Windows et la création d’un pilote avec wdK. Voici un résumé des étapes :

  1. Chargez l’exemple sysvad audio universel à utiliser comme point de départ pour votre pilote audio universel. Vous pouvez également commencer par le modèle de pilote WDM vide et ajouter du code à partir de l’exemple sysvad universel si nécessaire pour votre pilote audio.

  2. Dans les propriétés du projet, définissez La plateforme cible sur « Universal ».

  3. Créez un package d’installation : si votre appareil cible exécute Windows 10 pour les éditions de bureau (Famille, Professionnel, Entreprise et Éducation), utilisez un fichier INF universel. Si votre appareil cible exécute Windows 10 Mobile, utilisez PkgGen pour générer un fichier .spkg.

  4. Générez, installez, déployez et déboguez le pilote pour Windows 10 pour les éditions de bureau ou Windows 10 Mobile.

Exemple de code

Sysvad et SwapAPO ont été convertis en exemples de pilotes Windows universels. Pour plus d’informations, consultez Exemples de pilotes audio.

Interfaces de programmation disponibles pour les pilotes Windows universels pour audio

À compter de Windows 10, les interfaces de programmation de pilotes font partie des éditions OneCoreUAP de Windows. À l’aide de cet ensemble commun, vous pouvez écrire un pilote Windows universel. Ces pilotes s’exécutent sur Windows 10 pour les éditions de bureau et Windows 10 Mobile et d’autres versions de Windows 10.

Les DDIS suivants sont disponibles lors de l’utilisation de pilotes audio universels.

Convertir un pilote audio existant en pilote Windows universel

Suivez ce processus pour convertir un pilote audio existant en pilote Windows universel.

  1. Déterminez si vos appels de pilote existants s’exécutent sur OneCoreUAP Windows. Vérifiez la section configuration requise des pages de référence. Pour plus d’informations, consultez référence sur les appareils audio.

  2. Recompilez votre pilote en tant que pilote Windows universel. Dans les propriétés du projet, définissez La plateforme cible sur « Universal ».

  3. Utilisez l’outil ApiValidator.exe pour vérifier que les DDIS que vos appels de pilote sont valides pour un pilote Windows universel. Cet outil fait partie du Kit de pilotes Windows (WDK) pour Windows 10 et s’exécute automatiquement si vous utilisez Visual Studio 2015. Pour plus d’informations, consultez APIValidator.

  4. Si le pilote appelle des interfaces qui ne font pas partie de OneCoreUAP, le compilateur signale des erreurs.

  5. Remplacez ces appels par d’autres appels, ou créez une solution de contournement de code ou écrivez un nouveau pilote.

Créer une installation de pilote audio séparé en plusieurs composants

Vue d’ensemble

Pour créer une expérience d’installation plus fluide et plus fiable et pour mieux prendre en charge la maintenance des composants, divisez le processus d’installation du pilote en composants suivants.

  • DSP (le cas échéant) et codec
  • APO
  • Personnalisations OEM

Si vous le souhaitez, des fichiers INF distincts peuvent être utilisés pour le DSP et le codec.

Ce diagramme récapitule une installation audio en composant.

Diagramme de la pile audio en composant avec le pilote, le codec et les API DSP.

Un fichier INF d’extension distinct est utilisé pour personnaliser chaque composant de pilote de base pour un système particulier. Les personnalisations incluent les paramètres de réglage et d’autres paramètres spécifiques au système. Pour plus d’informations, consultez Utilisation d’un fichier INF d’extension.

Un fichier INF d’extension doit être un fichier INF universel. Pour plus d’informations, consultez Utiliser un fichier INF universel.

Pour plus d’informations sur l’ajout de logiciels à l’aide de fichiers INF, consultez Utilisation d’un fichier INF de composant et des principes de conception DCH et meilleures pratiques.

Envoi de fichiers INF composantés

Les packages APO INF doivent être envoyés à l’Espace partenaires séparément du package de pilotes de base. Pour plus d’informations sur la création de packages, consultez Prise en main de Windows HLK.

Fichiers INF composantÉS SYSVAD

Pour voir un exemple de fichiers INF composantés, examinez sysvad /TabletAudioSample, sur GitHub.

Nom de fichier Description
ComponentizedAudioSample.inf Exemple de fichier INF audio en composant de base.
ComponentizedAudioSampleExtension.inf Pilote d’extension pour la base sysvad avec des personnalisations OEM supplémentaires.
ComponentizedApoSample.inf Exemple de fichier INF d’extension APO.

Les fichiers INF traditionnels continuent d’être disponibles dans l’exemple SYSVAD.

Nom de fichier Description
tabletaudiosample.inf Fichier INF monolithique de bureau qui contient toutes les informations nécessaires pour installer le pilote.

Paramètres de paramétrage spécifiques au fournisseur APO et configuration des fonctionnalités

Tous les paramètres, paramètres et valeurs de réglage spécifiques du système FOURNISSEUR APO doivent être installés via un package INF d’extension. Dans de nombreux cas, cela peut être effectué de manière simple avec la directive AddReg INF. Dans des cas plus complexes, un fichier de paramétrage peut être utilisé. 

Les packages de pilotes de base ne doivent pas dépendre de ces personnalisations pour fonctionner (bien que bien que les fonctionnalités puissent être réduites). 

API paramètres audio UWP

Pour implémenter une interface utilisateur utilisateur final, utilisez une application de support matériel (HSA) pour un pilote Audio universel Windows. Pour plus d’informations, consultez l’application de support matériel (HSA) : étapes pour les développeurs de pilotes.

Lancement programmatique d’applications de prise en charge matérielle UWP

Pour lancer par programmation une application de support matériel UWP, basée sur un événement de pilote (par exemple, lorsqu’un nouvel appareil audio est connecté), utilisez les API Windows Shell. Les API Windows 10 Shell prennent en charge une méthode pour lancer l’interface utilisateur UWP en fonction de l’activation des ressources ou directement via IApplicationActivationManager. Vous trouverez plus d’informations sur le lancement automatisé pour les applications UWP dans Automatiser le lancement d’applications UWP Windows 10. 

APO et fournisseur de pilotes de périphérique utilisent l’API AudioModules

L’API modules audio/DDI est conçue pour normaliser le transport de communication (mais pas le protocole) pour les commandes passées entre une application UWP ou un service en mode utilisateur vers un module de pilote de noyau ou un bloc de traitement DSP. Les modules audio nécessitent un pilote implémentant la DDI correcte pour prendre en charge l’énumération et la communication des modules. Les commandes sont passées en tant que binaire et interprétation/définition sont laissées au créateur. 

Les modules audio ne sont actuellement pas conçus pour faciliter la communication directe entre une application UWP et une APO SW s’exécutant dans le moteur audio.

Pour plus d’informations sur les modules audio, consultez Implémentation de la communication de module audio et configurer et interroger des modules d’appareil audio.

Construction de chaînes APO HWID

Les ID matériels APO incorporent des informations standard et des chaînes définies par le fournisseur.

Elles sont construites comme suit :

SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4) &REV_r(4)
SWC\VEN_v(4)&AID_a(4)&SUBSYS_ n(4)s(4)
SWC\VEN_v(4)&AID_a(4)

Où :

  • v(4) est l’identificateur de 4 caractères pour le fournisseur d’appareils APO. Cette opération sera gérée par Microsoft. 
  • a(4) est l’identificateur de 4 caractères pour l’APO, défini par le fournisseur APO. 
  • n(4) est l’identificateur pci SIG de 4 caractères pour le fournisseur du sous-système pour l’appareil parent. Il s’agit généralement de l’identificateur OEM.
  • s(4) est l’identificateur de sous-système défini par le fournisseur de 4 caractères pour l’appareil parent. Il s’agit généralement de l’identificateur de produit OEM.

Plug-and-Play version INF et l’évaluation de date pour la mise à jour du pilote

Le système Windows Plug-and-Play évalue la date et la version du pilote pour déterminer quel lecteur installer quand plusieurs pilotes existent. Pour plus d’informations, consultez Comment windows classe les pilotes.

Pour permettre l’utilisation du pilote le plus récent, assurez-vous et mettez à jour la date et la version pour chaque nouvelle version du pilote.

Clé de Registre du pilote APO

Pour les clés de Registre AUDIO/APO définies par des tiers, utilisez HKR.

Utiliser un service Windows pour faciliter la communication UWP <-> APO

Un service Windows n’est pas strictement requis pour la gestion des composants en mode utilisateur, tels que les API. Toutefois, si votre conception inclut un serveur RPC pour faciliter la communication UWP <-> APO, nous vous recommandons d’implémenter cette fonctionnalité dans un service Windows qui contrôle ensuite l’APO s’exécutant dans le moteur audio. 

Génération de l’exemple Sysvad Universal Audio pour Windows 10 Desktop

Effectuez les étapes suivantes pour générer l’exemple sysvad pour le bureau Windows 10.

  1. Recherchez le fichier inf de bureau (tabletaudiosample.inf) et définissez le nom du fabricant sur une valeur telle que « Contoso »

  2. Dans Explorateur de solutions, sélectionnez et maintenez la solution « sysvad » enfoncée (ou cliquez avec le bouton droit) et choisissez Configuration Manager. Si vous effectuez un déploiement sur une version 64 bits de Windows, définissez la plateforme cible sur x64. Assurez-vous que les paramètres de configuration et de plateforme sont identiques pour tous les projets.

  3. Générez tous les projets dans la solution sysvad.

  4. Recherchez le répertoire de sortie de la build à partir de la build. Par exemple, il peut se trouver dans un répertoire comme suit :

    C:\Program Files (x86)\Windows Kits\10\src\audio\sysvad\x64\Debug\package
    
  5. Copiez les fichiers suivants dans le système que vous souhaitez installer le pilote sysvad :

Fichier Description
TabletAudioSample.sys Le fichier pilote.
tabletaudiosample.inf Un fichier d’informations (INF) qui contient les informations nécessaires pour installer le pilote.
sysvad.cat Fichier catalogue.
SwapAPO.dll Exemple d’extension de pilote pour une interface utilisateur pour gérer les API.
KeywordDetectorAdapter.dll Un exemple de détecteur de mot clé.

Installer et tester le pilote

Suivez ces étapes pour installer le pilote à l’aide de PnpUtil sur le système cible.

  1. Ouvrez et invite de commandes Administrateur, puis tapez ce qui suit dans le répertoire dans lequel vous avez copié les fichiers du pilote.

    pnputil -i -a tabletaudiosample.inf

  2. L’installation du pilote sysvad doit se terminer. S’il existe des erreurs, vous pouvez examiner ce fichier pour obtenir des informations supplémentaires : %windir%\inf\setupapi.dev.log

  3. Dans Gestionnaire de périphériques, dans le menu Affichage, choisissez Appareils par type. Dans l’arborescence de l’appareil, recherchez Microsoft Virtual Audio Device (WDM) - Exemple Sysvad. Il s’agit généralement du nœud Contrôleurs audio, vidéo et de jeu.

  4. Sur l’ordinateur cible, ouvrez Panneau de configuration et accédez à Matériel et Son>Gérer les périphériques audio. Dans la boîte de dialogue Son, sélectionnez l’icône du haut-parleur étiquetée en tant que périphérique audio virtuel Microsoft (WDM) - Exemple Sysvad, puis sélectionnez Définir la valeur par défaut, mais ne sélectionnez pas OK. Cela gardera la boîte de dialogue Son ouverte.

  5. Localisez un fichier audio MP3 ou autre sur l’ordinateur cible et double-cliquez dessus pour le lire. Ensuite, dans la boîte de dialogue Son, vérifiez qu’il existe une activité dans l’indicateur de niveau volume associé au périphérique AUDIO virtuel Microsoft (WDM) - Exemple de pilote Sysvad.