誰有這方面的資料或源碼?
如我要向print port 送出一些數據,
_outp(0x378,0x20).在winxp下會出錯,端口好象被禁用.

解决方案 »

  1.   

    电脑报Visual C++网络教程
     12.3 串行通信与重叠I/OWin 32系统为串行通信提供了全新的服务。传统的OpenComm、ReadComm、WriteComm、CloseComm等函数已经过时,WM_COMMNOTIFY消息也消失了。取而代之的是文件I/O函数提供的打开和关闭通信资源句柄及读写操作的基本接口。新的文件I/O函数(CreateFile、ReadFile、WriteFile等)支持重叠式输入输出,这使得线程可以从费时的I/O操作中解放出来,从而极大地提高了程序的运行效率。12.3.1 串行口的打开和关闭Win 32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateFile来打开或创建的。该函数的声明为:HANDLE CreateFile(LPCTSTR lpFileName, // 文件名 DWORD dwDesiredAccess, // 访问模式 DWORD dwShareMode, // 共享模式 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 通常为NULLDWORD dwCreationDistribution, // 创建方式 DWORD dwFlagsAndAttributes, // 文件属性和标志HANDLE hTemplateFile // 临时文件的句柄,通常为NULL );如果调用成功,那么该函数返回文件的句柄,如果调用失败,则函数返回INVALID_HANDLE_VALUE。如果想要用重叠I/O方式(参见12.3.3)打开COM2口,则一般应象清单12.4那样调用CreateFile函数。注意在打开一个通信端口时,应该以独占方式打开,另外要指定GENERIC_READ、GENERIC_WRITE、OPEN_EXISTING和FILE_ATTRIBUTE_NORMAL等属性。如果要打开重叠I/O,则应该指定 FILE_FLAG_OVERLAPPED属性。
     
    lpFileName为“LPT1”
    然后用WriteFile
      

  2.   

    上面的方法在WIN98下可以,可是WIN2000行不同。返回特权指令异常“Privileged Instruction".需要写一个 驱动程序。具体的,可以参考《程序员》2003.6,93页。这样回答,可以吗?
      

  3.   

    能否給個WIN2K下打開IO端口的例子.
      

  4.   

    http://www.csdn.net/magazine/download.shtm,有可以下载的原代码,请在2003~6中找。