Pilotes Windows universels pour 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. En plus des 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 avec les pilotes Windows universels pour l’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 et le coût de développement initial et de maintenance du code ultérieur.

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

  • Visual Studio 2015 : Définissez « Target Platform » sur « Universal ». Pour plus d’informations sur la configuration de l’environnement de développement de pilotes, consultez Prise en main avec les pilotes Windows universels.

  • 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 Validation des pilotes Windows universels.

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

Créer un pilote audio universel

Pour obtenir des instructions pas à pas, consultez Prise en main avec les pilotes Windows universels. 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 le code à partir de l’exemple sysvad universel si nécessaire pour votre pilote audio.

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

  3. Créer 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 configurable. 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 é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 basées sur OneCoreUAP de Windows. En utilisant cet ensemble commun, vous pouvez écrire un pilote Windows universel. Ces pilotes s’exécutent à la fois sur les Windows 10 pour les éditions de bureau et les Windows 10 Mobile, ainsi que sur d’autres versions 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 pilotes existants s’exécuteront sur OneCoreUAP Windows. Consultez la section Configuration requise des pages de référence. Pour plus d’informations , consultez Référence des périphériques audio.

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

  3. Utilisez l’outil ApiValidator.exe pour vérifier que les DDIs que votre pilote appelle 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 Validation des pilotes Windows universels.

  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, créez une solution de contournement de code ou écrivez un nouveau pilote.

Création d’une installation de pilote audio en 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 composants.

Diagramme de la pile audio en composants 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 paramétrage 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 Utilisation d’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 Principes et meilleures pratiques de conception DCH.

Envoi de fichiers INF composant

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

Fichiers INF composant SYSVAD

Pour voir un exemple de fichiers INF en composants, examinez sysvad/TabletAudioSample, sur GitHub.

Nom de fichier Description
ComponentizedAudioSample.inf Exemple de fichier INF audio 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 réglage spécifiques au fournisseur APO et configuration des fonctionnalités

Tous les paramètres, paramètres et valeurs de paramétrage spécifiques au système apospéraire 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 (même si, bien sûr, les fonctionnalités peuvent être réduites). 

API des paramètres audio UWP

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

Lancement programmatique des applications de support matériel UWP

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

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

L’API/DDI des modules audio 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 appropriée pour prendre en charge l’énumération et la communication des modules. Les commandes sont passées en tant que binaires et l’interprétation/définition est laissée 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 de périphérique audio.

Construction de chaînes HWID APO

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

Ils sont construits 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 à 4 caractères du fournisseur d’appareils APO. Il sera géré par Microsoft. 
  • a(4) est l’identificateur à 4 caractères de l’APO, défini par le fournisseur APO. 
  • n(4) est l’identificateur PCI SIG attribué à 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 à 4 caractères pour l’appareil parent. Il s’agit généralement de l’identificateur de produit OEM.

Plug-and-Play INF version et évaluation de la 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 le lecteur à installer lorsque plusieurs pilotes existent. Pour plus d’informations, consultez Comment Windows classe les pilotes.

Pour autoriser l’utilisation du pilote le plus récent, vérifiez 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 APO/pilote audio définis par un 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 en cours d’exécution dans le moteur audio. 

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

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

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

  2. Dans Explorateur de solutions, sélectionnez la solution « sysvad » et appuyez longuement (ou cliquez avec le bouton droit) et choisissez Configuration Manager. Si vous déployez sur une version 64 bits de Windows, définissez la plateforme cible sur x64. Assurez-vous que la configuration et les paramètres 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 celui-ci :

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

Fichier Description
TabletAudioSample.sys Fichier de pilote.
tabletaudiosample.inf 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 Exemple de détecteur 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 de pilote.

    pnputil -i -a tabletaudiosample.inf

  2. L’installation du pilote sysvad doit se terminer. En cas d’erreur, 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. Cela se trouve généralement sous le 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 audio>Gérer les périphériques audio. Dans la boîte de dialogue Son, sélectionnez l’icône d’orateur étiquetée Microsoft Virtual Audio Device (WDM) - Exemple Sysvad, puis sélectionnez Définir par défaut, mais ne sélectionnez pas OK. La boîte de dialogue Son reste ouverte.

  5. Recherchez un fichier MP3 ou un autre fichier audio sur l’ordinateur cible et double-cliquez pour le lire. Ensuite, dans la boîte de dialogue Son, vérifiez qu’il existe une activité dans l’indicateur de niveau de volume associé au pilote WdM (Microsoft Virtual Audio Device) - Sysvad.