6
votes

Installation d'un pilote à l'aide d'un fichier INF C ++

Quelqu'un pourrait-il s'il vous plaît s'il vous plaît laissez-moi savoir comment installer des pilotes de périphérique 3ème partie Programmatiquement si tous les fichiers requis, c'est-à-dire un fichier INF, .sys, etc. sont fournis. le Système d'exploitation minimum Cette solution doit fonctionner est Windows2000.

J'ai essayé de copier le fichier dans le dossier Win Dossier \ Inf et le fichier SYS dans le dossier Win \ System32 \ Pilotes, mais chaque fois que chaque fois brancher l'appareil, Windows Pops up a trouvé une nouvelle interface utilisateur matérielle qui est ce que j'essaie d'éviter.

ci-dessous est quelque chose que j'ai essayé mais la fonction renvoie erreur 87 (le paramètre est incorrect) . xxx

merci.


3 commentaires

Cliquez avec le bouton droit sur le fichier INF, puis cliquez sur Installer.


@Aristos: Vous pouvez même utiliser un robot Java pour le faire pour vous :-)


Guyz Merci pour la réponse, mais l'installation des pilotes est programmatique en C, C ++.


3 Réponses :


2
votes

Vous pouvez utiliser installhinfsection .


1 commentaires

J'ai donné un test rapide à l'aide d'un fichier de commandes, mais cette API n'installez pas les pilotes sur Windows Vista. Lorsque je branche le périphérique, les fenêtres apparaissent sur le nouveau matériel UI Rundll32.exe setupapi.dll, installhinfsection TI3410.UNI 128 C: \\ drivers_test \\ testtub.inf



2
votes

Ce pourrait être votre utilisation de

file pboolwasinuse = false;

. Vous devriez le changer dans

fichier boolwasinuse = false;

et utilisez-le dans l'appel de la fonction avec & filewasinuse (notez le & -character).


3 commentaires

+1 MSDN dit que ce paramètre est requis, le passage d'un pointeur NULL provoquera une erreur 87.


Vous avez raison, la fonction s'exécute correctement maintenant, mais une fois que je branche l'assistant "trouvé nouvel matériel" apparaît toujours. J'ai même essayé de redémarrer le PC et j'ai recommencé le périphérique, mais le même résultat. Y a-t-il une autre approche de celle qui peut être utilisée pour installer les pilotes ??


@ NewDev1: Je ne sais vraiment pas, je viens de repérer l'erreur de programmation. Mais ça me semble un bon matériel pour une nouvelle question!



3
votes

oui. Vous commencez par appeler xxx pré>

alors que le fichier .inf stocké dans Szinffilename vous appelez: p> xxx pré>

alors que vous appelez p> xxx pré>

sourcefile strong> = nom du fichier de pilote (finissant par .sys) SourcePathroot strong> = L'emplacement du fichier de pilote (serait le chemin où votre programme passe de) Nom de destination strong> = chemin complet du pilote à installer (par exemple: p> xxx pré>

alors il y a le registre. Vous devez ajouter une entrée pour votre Driver sous P>

CloseServiceHandle(manager)


4 commentaires

Vraiment bon tutoriel sur la façon d'installer et de démarrer un pilote à partir du code d'UseMode


Bonjour, j'essaie d'installer mon pilote Minifilter à partir d'un service Windows exécutant sous Système. Le problème est que j'utilise c #. J'ai essayé de pincer les méthodes que vous avez mentionnées, bien que je ne puisse pas trouver comment Pinvoke SetupInstallfileEx. Avez-vous une idée de comment puis-je obtenir un pilote installé depuis mon service Windows?


Meilleur si vous utilisez c ++


Startservice ou démarrer mon chauffeur en général provoque un écran bleu dans authentiqueintel.sys avant que mon chauffeur de chauffeur soit déjà appelé une raison complètement inconnue