Dévelopement modem logiciel - Driver Windows - Help please

lherderien Messages postés 6 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 28 juillet 2005 - 26 avril 2005 à 13:06
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010 - 26 avril 2005 à 14:37
Bonjour je ne suis pas très expérimenté en programmation système
windows et je dois développer un modem logiciel. (arrêtez moi quand je
me trompe).





Cela revient donc a développer un driver? Mais quel type de driver?

J'ai lu qu'il y en avait plusieurs sorte et j'ai cru comprendre que le
plus adapté dans ce cas est le VDD (Virtual Device Driver). Non?




Ensuite quel est le language à utiliser? Pareil, je n'ai pas trouvé de
réponse clair, visiblement le C++ est à banir pour les drivers en
KERNEL-MODE, mais les VDD ne sont - ils pas en USER-MODE? Peut-on donc
utiliser le C++?



Enfin voila ce qui me pose problème.

Je remercie déja toutes les personnnes pouvant m'aider car la je suis un peu callé ;)

4 réponses

jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
26 avril 2005 à 13:35
Salut,



J'ai eu un projet un peu identique, je suis partie des sources de
ircomm2k qui est un pilote virtuel de port COM et qui redirige les
requetes vers un port infrarouge. L'avantage de ce code est lié à son
architecture : A l'epoque de mon projet irComm2k était constitué d'un
pilote COM et d'un service, le pilote ne fait qu'emuler un port COM et
reroute les commandes vers le service. Pour mon projet je n'ai eu qu'a
faire mon propre service et gerer les commandes dans ce service : cela
a des avantages et des inconvenients : le service ne s'execute pas en
kernel mode et peut facilement interagir avec l'utilisateur et d'autres
programmes.



Si vraiment tu veux faire le pilote de zero, il doit y avoir un exemple de code dans le DDK.



L'adresse : IrComm2K



A+

JP.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 avril 2005 à 14:01
Copier coller pour résumer sommairement ce qu'est un VDD:
A virtual device driver (VDD) is a user-mode component that allows MS-DOS-based applications to access hardware on Intel x86 platforms. A VDD relies on the I/O permission mask to trap port access, and it essentially simulates the operation of hardware for the benefit of applications that were originally programmed to talk directly to hardware on a bare machine. Don’t confuse a Windows XP VDD with a Windows 98/Me VxD. Both are called virtual device drivers, and they serve the same basic purpose of virtualizing hardware, but they employ completely different software technology.

Que ce soit user-mode ou kernel, une saine habitude est de toujours faire en C ce genre de produit. Quel intérêt y aurait-il à PLUPLUSer dans ton vdd, tu penses réemployer ses classes ailleurs ?
En kernel mode jamais de C++, allouer une instance de classe 'sur le tas du prog' n'aurait aucun sens dans un contexte indéfini. On n'emploie que les fonctions de l'allocateur system, ExAllocatePoolWithTag() par exemple.

A toi de voir si tu as vraiment besoin d'un driver ou non pour ton prog, bien souvent l'API user-mode est suffisant.

On pourra reprendre cette discussion dans quelques jours, pour déménagement mon bureau sera démonté vers 17h.

ciao...
BruNews, MVP VC++
0
lherderien Messages postés 6 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 28 juillet 2005
26 avril 2005 à 14:21
Merci à vous!



BruNews : "A toi de voir si tu as vraiment besoin d'un driver ou non pour ton prog, bien souvent l'API user-mode est suffisant."

-> En fait le but du jeu est de pouvoir rejouter une surcouche à un
périphérique type modem RTC. Donc d'un coté j'ai COM1 qui correpond au
modem par exemple, et de l'autre coté un logiciel qui doit communiquer
avec mon système.



Donc tu as p-e raison, développer un driver entier pour cette appli n'est peut être pas nécessaire.



Ta solution JP semble plus simple, utiliser un pilote virtuel pour
récupérer son flux peut être un bon compromis. Comment se traduit
physiquement le service? C'est une tâche de fond? Comment elle est
lancée?



@+
0
jpthomasset Messages postés 95 Date d'inscription samedi 19 juin 2004 Statut Membre Dernière intervention 20 avril 2010
26 avril 2005 à 14:37
Je t'avouerais que j'avais choisi cette solution par facilité : je ne connaissais rien à la programmation des pilotes.

Pour le service, il s'agit d'un service NT classique, il se lance donc selon les paramètres qu'on lui spécifie : Auto, manuel...

Pour avoir un aperçu du programme jette un oeil ici : IrComm2k Tech Details

Dans le schéma, tu n'a qu'a recreer le service ircomm2k.exe, tu peux
d'ailleurs te baser sur le source pour communiquer avec le pilote, il
ne te reste donc qu'a gerer les messages envoyés à travers le pseudo
port COM.



A+,

JP.
0
Rejoignez-nous