C中的特权指令

时间:2011-04-27 17:09:22

标签: c windows parallel-processing privileges ports

我遇到了一些问题。我正在尝试在VS 2010 Ultimate中的Windows 7 Professional x64中编写并行端口。 由于我没有并行端口,我使用USB转换器> Parallel和Windows正确安装了驱动程序。 我已经在并行连接器的末端焊接了8个LED-s,当我将USB连接到计算机时它们都工作正常。 现在,我想通过用C编写的程序控制并行端口,即:

#include <stdio.h>
#include <dos.h>
#include <conio.h>
#include <Windows.h>
/********************************************/
/*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 */
}

程序被编译并运行但我收到一条错误消息:

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

我已经读过在Windows NT机器中禁用了端口IO,并且需要特定的驱动程序才能执行此操作。有什么解决方案吗?

2 个答案:

答案 0 :(得分:1)

有很多方法可以解决这个问题。例如,请参阅here

答案 1 :(得分:0)

您的USB-&gt;并行转换器具有创建虚拟并行端口的驱动程序。它实现了Windows并行端口API。它没有实现PC / AT并行端口寄存器级API,即使您被允许编写I / O端口0x0378,也不会在那里找到任何东西。只有系统总线上的真实PC / AT并行端口(ISA或PCI)才能使用该寄存器。