Instruction privilégiée en C

J’ai des problèmes avec C. J’essaie de programmer un port parallèle dans Windows 7 Professional x64 dans VS 2010 Ultimate. Comme je n’ai pas de port parallèle, j’utilise un convertisseur USB-> parallèle et Windows a correctement installé les pilotes. J’ai soudé 8 DEL à l’extrémité du connecteur parallèle et elles fonctionnent toutes bien lorsque je connecte la clé USB à l’ordinateur. Maintenant, je voudrais contrôler le port parallèle via mon programme écrit en C qui est:

#include  #include  #include  #include  /********************************************/ /*This program set the parallel port outputs*/ /********************************************/ void main (void) { //clrscr(); /* clear screen */ _outp(0x378,0xff); /* output the data to parallel port */ getch(); /* wait for keypress before exiting */ } 

Le programme est compilé et exécuté, mais un message d’erreur apparaît:

 Unhandled exception at 0x00f313a5 in portovi.exe: 0xC0000096: Privileged instruction. 

J’ai lu que le port IO est désactivé sur les machines Windows NT et que vous avez besoin d’un pilote spécifique pour le faire. Y a-t-il une solution à cela?

Il existe des façons de le faire. Voir ici par exemple.

Votre convertisseur USB-> parallèle a des pilotes pour créer un port parallèle virtuel. Il implémente l’API de port parallèle Windows. Il 0x0378 pas l’API de niveau registre du port parallèle PC / AT, et même si vous étiez autorisé à écrire le port d’E / S 0x0378 , vous n’y trouverez rien. Seuls les vrais ports parallèles PC / AT sur le bus système (ISA ou PCI) utilisent ce registre.