4

我正在尝试使用 C# 程序将数据发送到 LPT1 端口,不幸的是没有成功。我使用的是 Windows 7 x64。我尝试了 x86 和 x64 (inpoutx64.dll) dll 的..

当我发送时使用 x64 dll:

Output(888, 255);

它只是继续程序,一切顺利,但我在万用表上看不到任何东西(只有静态 0.02V)..

我还用 C++ 尝试了以下操作:

int main () {
int val = 0;
printf("Enter a value\n");
scanf("%d", &val);
_outp(0x378, val);
getchar();
_outp(0x378, 0);
return 0; }

但它抛出了一个异常:

Unhandled exception at 0x01281428 in ppac.exe: 0xC0000096: Privileged instruction.

我记得有一次我在 xp 上做了类似的工作(C# 而不是 C++ 代码),我希望在 win7 上也可以。请帮帮我。

谢谢。

4

1 回答 1

6

所使用的 IO 端口_outp与您尝试对并行端口执行的操作不同。IO 端口是一种处理器级别的方式来获取对不同设备的原始访问。使用 IO 端口_outp应该是设备驱动程序所做的事情。因此,它在足够现代以具有良好内核/用户空间分离(即任何基于 Windows NT的任何版本)的任何版本的 Windows 中都具有特权(即仅内核)。我几乎 100% 肯定你从来没有_outp在 XP 上工作过。

要在高级代码中访问并行端口,只需像普通文件一样打开它,使用文件名LPT1:

于 2010-05-30T22:12:31.510 回答