2009-03-24 7 views
19

Je souhaite déployer un pilote USB basé sur .inf avec mon programme d'installation.Comment déployer un pilote basé sur .inf?

Je suppose que le .inf doit être placé dans %SystemRoot%\inf, mais il y a aussi un .cat (certification WHQL je suppose?), Et les fichiers .sys. Qu'est-ce que je fais avec ceux-là?

EDIT: Résolu, grâce aux réponses utiles. j'ai pu P/Invoke la fonction, donc j'ai une action post-installation qui exécute le code suivant:

namespace DriverPackageInstallAction 
{ 
    static class Program 
    { 
     [DllImport("DIFXApi.dll", CharSet = CharSet.Unicode)] 
     public static extern Int32 DriverPackagePreinstall(string DriverPackageInfPath, Int32 Flags); 

     /// <summary> 
     /// The main entry point for the application. 
     /// </summary> 
     [STAThread] 
     static void Main() 
     { 
      DirectoryInfo assemblyDir = new DirectoryInfo(Application.ExecutablePath); 
      DirectoryInfo installDir = assemblyDir.Parent; 

      int result = DriverPackagePreinstall(installDir.FullName + @"\Driver\XYZ.inf", 0); 
      if (result != 0) 
       MessageBox.Show("Driver installation failed."); 
     } 
    } 
} 

Répondre

8

Je commencerais par lire environ SetupAPI et DIFx. Le Kit de pilotes Windows comprend les deux modules, y compris un module de fusion DIFx et une bibliothèque WiX DIFx. La source de l'utilitaire de ligne de commande devcon, basée sur SetupAPI, est également incluse dans les exemples WDK.

+0

liens corrects: http://msdn.microsoft.com/fr-fr/ library/ff550855.aspx et http://msdn.microsoft.com/en-us/library/ff544838.aspx –

+0

@ Dercsár: merci, je vais mettre à jour tous les 4 liens pour pointer vers les nouveaux emplacements. – bk1e

0

Vous pouvez essayer de demander au shell de l'installer pour vous:

%SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 YOUR_FILE.inf 

Mais je suis sûr à 100% qu'il y a un meilleur moyen ...

+0

Cela ne fonctionne pas – Christopher

+0

Eh bien, cela a fonctionné sur mon ordinateur quand je l'ai essayé ... Je suppose que votre ordinateur est juste différent ... – scraimer

Questions connexes