je suis trop vieux ou outporb n'existe plus en C ?

je suis trop vieux ou outporb n'existe plus en C ? - Programmation

Marsh Posté le 27-05-2001 à 13:38:05    

salut...
 
il y a deux ans, j'utilisais outportb et inportb pour jouer avec mes COMi ...
je suis sous borland bcc5.5
en plus, je n'arrive pas à trouver de doc...
pfff...
 
c'est un WE qui commence bien...
 
merci à tous

Reply

Marsh Posté le 27-05-2001 à 13:38:05   

Reply

Marsh Posté le 27-05-2001 à 14:27:16    

outporb c'est pas du C "universel" donc borland a peut être changé les fonctions.
MS utilise outp et sous linux c'est outb.

Reply

Marsh Posté le 27-05-2001 à 14:35:51    

Je ne sais ce qu'il en est pour Borland, mais en Visual C++, il y a les fonctions _outp, _outpw, _outpd, _inp, _inpw, _inpd, dans le fichier <conio.h>

Reply

Marsh Posté le 29-05-2001 à 10:12:35    

Sous Borland C++ 5.02, ces fonctions existent toujours.. Pourquoi les auraient-ils supprimées ?
 
Mais pour les utiliser sous Win NT, je ne suis pas sûr qu'elles soient autorisées (accès trop bas niveau).

Reply

Marsh Posté le 29-05-2001 à 10:36:41    

meme sous Win98 ca marche pas (sauf DOS hein ...)
j'ai deja essayé
et le pire c'est que ca te met pas une erreur genre "ce programme va etre arrte blablabla" comme ca le fait petretre sous WinNT, mais ca fait strictement rien (le proc il ignore ton code)
y'a un moyen "propre" de le faire : il faut en effet etre privilégié pour effectuer cette opération et un executable ne peut pas etre privilégié
seules les dll (c'est pas top rapide) et les VxD (tout est possible) peuvent etre privilégiés
en cherchant un peu j'ai donc trouvé une dll qui faisait ca : lecture/ecriture sur les ports/n'importe ou en memoire, sous 98 ou NT :wahoo:
c'est le seul moyen ...
j'ai plus l'adresse mais cherche sur google international des trucs genre "code ring0 write in memory"


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 29-05-2001 à 10:41:38    

j'ai retrouvé une premiere adresse (mais y'a un meilleur truc que j'ai pas retrouvé)
http://www.dc.ee/Files/Programm/Windows/
 
attention, c'est pas du code de PD qu'il y a sur ce site ;)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 30-05-2001 à 09:07:05    

Ci-joint le code écrit il y a dix ans (par un débutant) pour une DLL (perso) 16 BITS IN_OUT.DLL. Cela permet d'accéder aux ports à partir de VisualBasic 3 (qui ne le permet pas).
 
#include <windows.h>
#include <conio.h>
 
int FAR PASCAL LibMain(HANDLE hInstance, WORD wDataSeg, WORD cpHeapSize, LPSTR lpszCmdLine)
{
        return 1;
}
 
int FAR PASCAL WEP(int nParameter)
{
        return 1;
}
 
int FAR PASCAL _export in(int Valeur)
{
        return inp(Valeur);
}
 
void FAR PASCAL _export out(int Adresse, int Valeur)
{
 outp(Adresse, Valeur);
}
 
Déclaration sous VB3 :
Declare Function IN Lib "IN_OUT.DLL" (ByVal address%) As Integer
Declare Sub OUT Lib "IN_OUT.DLL" (ByVal address%, ByVal value%)
 
Utilisation sous VB3 :
OUT Adresse%, Valeur%  
Dummy% = IN(Adresse%)            
 
en BC, pas encore essayé
     h = LoadLibrary(NomDLL); devrait convenir
puis  
     FreeLibrary(h); quand plus besoin
 
Faudrait que je teste l'accès aux port du haut-parleur sous Win98/BC++5 ce soir, voir si cela fonctionne directement (??).

Reply

Marsh Posté le 30-05-2001 à 09:21:32    

il manque la partie la plus importante : celle qui donne d'avantage de privilèges à ta dll et lui autorise donc de faire ces outp ...
en plus les dll 16 bits ne sont pas utilisables depuis des programmes 32 bits ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 31-05-2001 à 09:56:43    

J'ai fait des tests. Ma DLL 16bits, recompilée en 32 n'est pas compilable (fonctions interdites dans ce mode) ni dans un prog.
 
Il faut peut-être passer par l'écriture d'un driver virtuel (VxD ?) ou mettre les instructions assembleur dans le prog C (si BiBill et le compilateur l'autorisent).
 
Je suis finalement content de toujours écrire mes progs pour Win 3 (ou DOS). Le passage sous Win_32 semble "prendre la tête" en ce qui concerne l'instrumentation. Vive le pingouin ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed