Est-il possible de g=E9rer les ports s=E9rie par un programme=20
DOS, ex=E9cut=E9 sur les postes sous Win NT, 2000 ou XP ?
Les essais que j'ai effectu=E9s permettent d'envoyer les=20
donn=E9es vers le port COM mais ne donnent pas de r=E9sultat=20
en lecture (cette application de communication bi-
directionnelle fonctionne parfaitement sur les postes Win=20
9x).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Claude BELLAMY
Yves s'est ainsi exprimé:
Est-il possible de gérer les ports série par un programme DOS, exécuté sur les postes sous Win NT, 2000 ou XP ?
Les essais que j'ai effectués permettent d'envoyer les données vers le port COM mais ne donnent pas de résultat en lecture (cette application de communication bi- directionnelle fonctionne parfaitement sur les postes Win 9x).
Il est strictement interdit sous NT d'accéder DIRECTEMENT (par des "in", "out", "intxxh",... au matériel) (ports E/S, DD, vidéo,..)!
Tout accès au matériel DOIT passer par le système.
Dans un programme Win32, on doit utiliser la fonction "CreateFile" (de kernel32.dll), qui permet d'ouvrir à peu près n'importe quoi (fichiers, répertoires, ports COM et LPT,..) Syntaxe C : HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile );
On doit avoir, dans le cas d'un port, : dwShareMode = 0 (accès exclusif) dwCreationDisposition = OPEN_EXISTING hTemplateFile = NULL
On peut aussi s'en tirer à l'aide d'une interface nommée "NTPort", qui fonctionne très bien (sous Win9X/ME/NT3.5x/NT4/W2K/XP/W2K3) , et est utilisable dans toute appli C,/C++, VB, Delphi, VN.NET, C#, ...(tout est fourni : les *.h, *.cpp, *.dsw, ..*.dfm, *.dpr, *.pas, ...*.frm..)
Son usage est plus simple que celui de Createfile.
Ce n'est pas gratuit, mais le prix est raisonnable (30 $) http://zealsoftstudio.com/ntport/
Si le programme est non modifiable (parce qu'on n'a pas le source, ...) et/ou parce que c'est une vieille appli DOS, la seule solution (pas évidente!) est de développer un VDD (Virtual Dos Driver), qui est une DLL 32 bits un peu spéciale, dont le rôle est d'intercepter tous les appels matériels directs d'une appli DOS, pour les retransmettre "correctement" à Windows.
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org *
Yves <anonymous@discussions.microsoft.com> s'est ainsi exprimé:
Est-il possible de gérer les ports série par un programme
DOS, exécuté sur les postes sous Win NT, 2000 ou XP ?
Les essais que j'ai effectués permettent d'envoyer les
données vers le port COM mais ne donnent pas de résultat
en lecture (cette application de communication bi-
directionnelle fonctionne parfaitement sur les postes Win
9x).
Il est strictement interdit sous NT d'accéder DIRECTEMENT (par des "in",
"out", "intxxh",... au matériel)
(ports E/S, DD, vidéo,..)!
Tout accès au matériel DOIT passer par le système.
Dans un programme Win32, on doit utiliser la fonction "CreateFile" (de
kernel32.dll), qui permet d'ouvrir à peu près n'importe quoi (fichiers,
répertoires, ports COM et LPT,..)
Syntaxe C :
HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
On doit avoir, dans le cas d'un port, :
dwShareMode = 0 (accès exclusif)
dwCreationDisposition = OPEN_EXISTING
hTemplateFile = NULL
On peut aussi s'en tirer à l'aide d'une interface nommée "NTPort", qui
fonctionne très bien (sous Win9X/ME/NT3.5x/NT4/W2K/XP/W2K3) , et est
utilisable dans toute appli C,/C++, VB, Delphi, VN.NET, C#, ...(tout est
fourni : les *.h, *.cpp, *.dsw, ..*.dfm, *.dpr, *.pas, ...*.frm..)
Son usage est plus simple que celui de Createfile.
Ce n'est pas gratuit, mais le prix est raisonnable (30 $)
http://zealsoftstudio.com/ntport/
Si le programme est non modifiable (parce qu'on n'a pas le source, ...)
et/ou parce que c'est une vieille appli DOS, la seule solution (pas
évidente!) est de développer un VDD (Virtual Dos Driver), qui est une DLL 32
bits un peu spéciale, dont le rôle est d'intercepter tous les appels
matériels directs d'une appli DOS, pour les retransmettre "correctement" à
Windows.
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Jean-Claude.Bellamy@wanadoo.fr * JC.Bellamy@free.fr
Est-il possible de gérer les ports série par un programme DOS, exécuté sur les postes sous Win NT, 2000 ou XP ?
Les essais que j'ai effectués permettent d'envoyer les données vers le port COM mais ne donnent pas de résultat en lecture (cette application de communication bi- directionnelle fonctionne parfaitement sur les postes Win 9x).
Il est strictement interdit sous NT d'accéder DIRECTEMENT (par des "in", "out", "intxxh",... au matériel) (ports E/S, DD, vidéo,..)!
Tout accès au matériel DOIT passer par le système.
Dans un programme Win32, on doit utiliser la fonction "CreateFile" (de kernel32.dll), qui permet d'ouvrir à peu près n'importe quoi (fichiers, répertoires, ports COM et LPT,..) Syntaxe C : HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile );
On doit avoir, dans le cas d'un port, : dwShareMode = 0 (accès exclusif) dwCreationDisposition = OPEN_EXISTING hTemplateFile = NULL
On peut aussi s'en tirer à l'aide d'une interface nommée "NTPort", qui fonctionne très bien (sous Win9X/ME/NT3.5x/NT4/W2K/XP/W2K3) , et est utilisable dans toute appli C,/C++, VB, Delphi, VN.NET, C#, ...(tout est fourni : les *.h, *.cpp, *.dsw, ..*.dfm, *.dpr, *.pas, ...*.frm..)
Son usage est plus simple que celui de Createfile.
Ce n'est pas gratuit, mais le prix est raisonnable (30 $) http://zealsoftstudio.com/ntport/
Si le programme est non modifiable (parce qu'on n'a pas le source, ...) et/ou parce que c'est une vieille appli DOS, la seule solution (pas évidente!) est de développer un VDD (Virtual Dos Driver), qui est une DLL 32 bits un peu spéciale, dont le rôle est d'intercepter tous les appels matériels directs d'une appli DOS, pour les retransmettre "correctement" à Windows.
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org *
Yves
Merci beaucoup pour ces explications claires et précises. Compte tenu de la complexité d'une éventuelle solution, je crois que je vais attendre le portage de mon appli vers une interface Windows (projet en cours) et continuer l'exploitation sur les postes W9x seuls. Bien cordialement Yves
"Jean-Claude BELLAMY" a écrit dans le message de news:
Yves s'est ainsi exprimé:
> Est-il possible de gérer les ports série par un programme > DOS, exécuté sur les postes sous Win NT, 2000 ou XP ? > > Les essais que j'ai effectués permettent d'envoyer les > données vers le port COM mais ne donnent pas de résultat > en lecture (cette application de communication bi- > directionnelle fonctionne parfaitement sur les postes Win > 9x).
Il est strictement interdit sous NT d'accéder DIRECTEMENT (par des "in", "out", "intxxh",... au matériel) (ports E/S, DD, vidéo,..)!
Tout accès au matériel DOIT passer par le système.
Dans un programme Win32, on doit utiliser la fonction "CreateFile" (de kernel32.dll), qui permet d'ouvrir à peu près n'importe quoi (fichiers, répertoires, ports COM et LPT,..) Syntaxe C : HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile );
On doit avoir, dans le cas d'un port, : dwShareMode = 0 (accès exclusif) dwCreationDisposition = OPEN_EXISTING hTemplateFile = NULL
On peut aussi s'en tirer à l'aide d'une interface nommée "NTPort", qui fonctionne très bien (sous Win9X/ME/NT3.5x/NT4/W2K/XP/W2K3) , et est utilisable dans toute appli C,/C++, VB, Delphi, VN.NET, C#, ...(tout est fourni : les *.h, *.cpp, *.dsw, ..*.dfm, *.dpr, *.pas, ...*.frm..)
Son usage est plus simple que celui de Createfile.
Ce n'est pas gratuit, mais le prix est raisonnable (30 $) http://zealsoftstudio.com/ntport/
Si le programme est non modifiable (parce qu'on n'a pas le source, ...) et/ou parce que c'est une vieille appli DOS, la seule solution (pas évidente!) est de développer un VDD (Virtual Dos Driver), qui est une DLL
32
bits un peu spéciale, dont le rôle est d'intercepter tous les appels matériels directs d'une appli DOS, pour les retransmettre "correctement" à Windows.
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org *
Merci beaucoup pour ces explications claires et précises.
Compte tenu de la complexité d'une éventuelle solution, je crois que je vais
attendre le portage de mon appli vers une interface Windows (projet en
cours) et continuer l'exploitation sur les postes W9x seuls.
Bien cordialement
Yves
"Jean-Claude BELLAMY" <Jean-Claude.Bellamy@wanadoo.fr> a écrit dans le
message de news: evDpl57kDHA.2528@TK2MSFTNGP12.phx.gbl...
Yves <anonymous@discussions.microsoft.com> s'est ainsi exprimé:
> Est-il possible de gérer les ports série par un programme
> DOS, exécuté sur les postes sous Win NT, 2000 ou XP ?
>
> Les essais que j'ai effectués permettent d'envoyer les
> données vers le port COM mais ne donnent pas de résultat
> en lecture (cette application de communication bi-
> directionnelle fonctionne parfaitement sur les postes Win
> 9x).
Il est strictement interdit sous NT d'accéder DIRECTEMENT (par des "in",
"out", "intxxh",... au matériel)
(ports E/S, DD, vidéo,..)!
Tout accès au matériel DOIT passer par le système.
Dans un programme Win32, on doit utiliser la fonction "CreateFile" (de
kernel32.dll), qui permet d'ouvrir à peu près n'importe quoi (fichiers,
répertoires, ports COM et LPT,..)
Syntaxe C :
HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
On doit avoir, dans le cas d'un port, :
dwShareMode = 0 (accès exclusif)
dwCreationDisposition = OPEN_EXISTING
hTemplateFile = NULL
On peut aussi s'en tirer à l'aide d'une interface nommée "NTPort", qui
fonctionne très bien (sous Win9X/ME/NT3.5x/NT4/W2K/XP/W2K3) , et est
utilisable dans toute appli C,/C++, VB, Delphi, VN.NET, C#, ...(tout est
fourni : les *.h, *.cpp, *.dsw, ..*.dfm, *.dpr, *.pas, ...*.frm..)
Son usage est plus simple que celui de Createfile.
Ce n'est pas gratuit, mais le prix est raisonnable (30 $)
http://zealsoftstudio.com/ntport/
Si le programme est non modifiable (parce qu'on n'a pas le source, ...)
et/ou parce que c'est une vieille appli DOS, la seule solution (pas
évidente!) est de développer un VDD (Virtual Dos Driver), qui est une DLL
32
bits un peu spéciale, dont le rôle est d'intercepter tous les appels
matériels directs d'une appli DOS, pour les retransmettre "correctement" à
Windows.
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Jean-Claude.Bellamy@wanadoo.fr * JC.Bellamy@free.fr
Merci beaucoup pour ces explications claires et précises. Compte tenu de la complexité d'une éventuelle solution, je crois que je vais attendre le portage de mon appli vers une interface Windows (projet en cours) et continuer l'exploitation sur les postes W9x seuls. Bien cordialement Yves
"Jean-Claude BELLAMY" a écrit dans le message de news:
Yves s'est ainsi exprimé:
> Est-il possible de gérer les ports série par un programme > DOS, exécuté sur les postes sous Win NT, 2000 ou XP ? > > Les essais que j'ai effectués permettent d'envoyer les > données vers le port COM mais ne donnent pas de résultat > en lecture (cette application de communication bi- > directionnelle fonctionne parfaitement sur les postes Win > 9x).
Il est strictement interdit sous NT d'accéder DIRECTEMENT (par des "in", "out", "intxxh",... au matériel) (ports E/S, DD, vidéo,..)!
Tout accès au matériel DOIT passer par le système.
Dans un programme Win32, on doit utiliser la fonction "CreateFile" (de kernel32.dll), qui permet d'ouvrir à peu près n'importe quoi (fichiers, répertoires, ports COM et LPT,..) Syntaxe C : HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile );
On doit avoir, dans le cas d'un port, : dwShareMode = 0 (accès exclusif) dwCreationDisposition = OPEN_EXISTING hTemplateFile = NULL
On peut aussi s'en tirer à l'aide d'une interface nommée "NTPort", qui fonctionne très bien (sous Win9X/ME/NT3.5x/NT4/W2K/XP/W2K3) , et est utilisable dans toute appli C,/C++, VB, Delphi, VN.NET, C#, ...(tout est fourni : les *.h, *.cpp, *.dsw, ..*.dfm, *.dpr, *.pas, ...*.frm..)
Son usage est plus simple que celui de Createfile.
Ce n'est pas gratuit, mais le prix est raisonnable (30 $) http://zealsoftstudio.com/ntport/
Si le programme est non modifiable (parce qu'on n'a pas le source, ...) et/ou parce que c'est une vieille appli DOS, la seule solution (pas évidente!) est de développer un VDD (Virtual Dos Driver), qui est une DLL
32
bits un peu spéciale, dont le rôle est d'intercepter tous les appels matériels directs d'une appli DOS, pour les retransmettre "correctement" à Windows.
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org *
JoeBaratin
On Thu, 16 Oct 2003 10:19:39 +0200, "Jean-Claude BELLAMY" wrote:
Si le programme est non modifiable (parce qu'on n'a pas le source, ...) et/ou parce que c'est une vieille appli DOS, la seule solution (pas évidente!) est de développer un VDD (Virtual Dos Driver), qui est une DLL 32 bits un peu spéciale, dont le rôle est d'intercepter tous les appels matériels directs d'une appli DOS, pour les retransmettre "correctement" à Windows.
J'ai une question :
existe t il un programme analysant un vieux programme dos afin de savoir quelles sont les appel au materiel ?
J'ai un programme qui ne fonctionne pas sous 2000 et qui rame a fond sur XP au point que si je le lance une deuxieme fois j'ai le temps de boire un café entre chaque manip (celeron 2000). J'aimerai developper un VDD si cela permet d'accelerer son traitement mais je ne sais pas où trouver de tutorial en francais.
merci d'avance pour les info.
-- Les fautes d'orthographes sus-citées sont déposées auprès de leurs propriétaires respectifs. Aucune responsabilité n'est engagée sur la lisibilité du message ou les éventuels dommages qu'ils peuvent engendrer.
On Thu, 16 Oct 2003 10:19:39 +0200, "Jean-Claude BELLAMY"
<Jean-Claude.Bellamy@wanadoo.fr> wrote:
Si le programme est non modifiable (parce qu'on n'a pas le source, ...)
et/ou parce que c'est une vieille appli DOS, la seule solution (pas
évidente!) est de développer un VDD (Virtual Dos Driver), qui est une DLL 32
bits un peu spéciale, dont le rôle est d'intercepter tous les appels
matériels directs d'une appli DOS, pour les retransmettre "correctement" à
Windows.
J'ai une question :
existe t il un programme analysant un vieux programme dos afin de
savoir quelles sont les appel au materiel ?
J'ai un programme qui ne fonctionne pas sous 2000 et qui rame a fond
sur XP au point que si je le lance une deuxieme fois j'ai le temps de
boire un café entre chaque manip (celeron 2000). J'aimerai developper
un VDD si cela permet d'accelerer son traitement mais je ne sais pas
où trouver de tutorial en francais.
merci d'avance pour les info.
--
Les fautes d'orthographes sus-citées sont déposées auprès de leurs
propriétaires respectifs. Aucune responsabilité n'est engagée sur
la lisibilité du message ou les éventuels dommages qu'ils peuvent
engendrer.
On Thu, 16 Oct 2003 10:19:39 +0200, "Jean-Claude BELLAMY" wrote:
Si le programme est non modifiable (parce qu'on n'a pas le source, ...) et/ou parce que c'est une vieille appli DOS, la seule solution (pas évidente!) est de développer un VDD (Virtual Dos Driver), qui est une DLL 32 bits un peu spéciale, dont le rôle est d'intercepter tous les appels matériels directs d'une appli DOS, pour les retransmettre "correctement" à Windows.
J'ai une question :
existe t il un programme analysant un vieux programme dos afin de savoir quelles sont les appel au materiel ?
J'ai un programme qui ne fonctionne pas sous 2000 et qui rame a fond sur XP au point que si je le lance une deuxieme fois j'ai le temps de boire un café entre chaque manip (celeron 2000). J'aimerai developper un VDD si cela permet d'accelerer son traitement mais je ne sais pas où trouver de tutorial en francais.
merci d'avance pour les info.
-- Les fautes d'orthographes sus-citées sont déposées auprès de leurs propriétaires respectifs. Aucune responsabilité n'est engagée sur la lisibilité du message ou les éventuels dommages qu'ils peuvent engendrer.
Jean-Claude BELLAMY
JoeBaratin <Ben Y En A Pas> s'est ainsi exprimé:
On Thu, 16 Oct 2003 10:19:39 +0200, "Jean-Claude BELLAMY" wrote:
Si le programme est non modifiable (parce qu'on n'a pas le source, ...) et/ou parce que c'est une vieille appli DOS, la seule solution (pas évidente!) est de développer un VDD (Virtual Dos Driver), qui est une DLL 32 bits un peu spéciale, dont le rôle est d'intercepter tous les appels matériels directs d'une appli DOS, pour les retransmettre "correctement" à Windows.
J'ai une question :
existe t il un programme analysant un vieux programme dos afin de savoir quelles sont les appel au materiel ?
DEBUG ! Et beaucoup de patience !!!!
J'ai un programme qui ne fonctionne pas sous 2000 et qui rame a fond sur XP au point que si je le lance une deuxieme fois j'ai le temps de boire un café entre chaque manip (celeron 2000). J'aimerai developper un VDD si cela permet d'accelerer son traitement mais je ne sais pas où trouver de tutorial en francais.
Ouh la !!!!!!!! Déjà en anglais ce n'est pas de la tarte, alors trouver çà en français ....
La seule doc sur les VDD que je possède est dans le MSDN : chapitre Windows Development DDK Other devices Devices Requiring VDDs Design Guide Writing a VDD
Un VDD est une DLL 32-bits qui tourne en mode user. Il transforme toutes les requêtes de programmes MS-DOS en appels en mode kernel. Il peut être appelé : - soit directement par une appli DOS modifiée, qui fera appel aux fonctions DispatchCall, RegisterModule UnRegisterModule - soit indirectement par la VDM (Virtual DOS machine) qui intercepte les accès périphériques de l'appli DOS et les redirige vers les fonctions "callback" du VDD. Dans ce cas, le VDD doit être déclaré explictement dans la Base de registres :
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlVirtualDeviceDrivers. entrée "VDD" (type REG_MULTI_SZ) valeur : <chemin complet VDD1.DLL>