VC++中如何访问i/o端口? gomi所说似乎不行out和in的汇编都不能执行。(NT) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以采用文件方式或直接端口访问(_inp,_oup;#include <conio.h>),文件方式在NT,9x,2000都可以使用,后一种只能在9x下使用。文件方式使用ReadFile(),WriteFile()操作 访问I/O的指令是特权指令,普通ring3的程序不能使用,只有使用vxd等办法切到ring0下才可以使用。但是如果是要使用某些特殊的端口,如串口,Windows本身提供了驱动,可以用CreateFile的方式打开。另外CMOS的70和71端口好象也可以使用,不过不太确定。不同的硬件有不同的驱动,不能单纯说有一个对I/O的vxd。你到是可以写个通用的切到ring0的vxd,在其中插入I/O指令。另外,在95/98下,写16位的程序也可以访问端口。那你就要用BC3.1或VC1.5什么的了 我用delphi的同学说delphi可以直接嵌汇编操作端口,你用delphi写个dll 可以使用tvichw32.dll来实现,他支持 sunhongbo 大虾:tvichw32.dll 只提供输出函数名,但不知道参数和功能,怎么办? 如果你需要的话,请发email:[email protected]或[email protected] 我刚才在我的机器里发现一个W32程序访问I/O多口的库,如果需要,庆贺我联系EMAIL:[email protected][email protected] #include <conio.h> before use _inp(..), _outp(..),.... win95/98的程序是可以直接访问端口的,系统没有对此加以限制,关键是你自己要管理好。使用_inp、_outp函数当然要加#include <conio.h>。另外,DLL和VXD不是一回事。DLL与LIB相对,都包含一些库函数,只不过一个是动态(不连入你的应用程序),一个是静态(连入你的程序)。DLL和应用程序都运行于ring3层,即非特权层,而VXD运行于ring0层,即处于系统核心的特权层。对硬件的控制一般在ring0层进行,即需要特权,因为硬件总是(在特定时间)独占的,不允许应用程序直接控制,否则易引起冲突。但win9x没有对端口进行特权管理,即应用程序可以直接控制。为了防止冲突,也可以写一个VXD对端口控制,应用程序通过VXD间接使用端口,这样可检测和防止不同的应用程序同时使用同一端口引起的冲突。如果你怕麻烦,直接用_inp、_outp操作端口也未尝不可,只要没有其它的程序也使用这个端口。既然能使用_inp、_outp函数,当然就能使用插入汇编的方式直接用in、out指令,例如:push dxmov dx, 0x3f8out dx, 100pop dx事实上,_inp、_outp就是这样的代码。 Vc路径问题,请高手指教,小妹这厢有礼了! 关于节点前图片显示的奇怪问题。。。。 *** 50分 再次请ATL/COM组件高手帮忙: 关于从已有的idl文件继承问题 *** 如何不通过窗口名称得到当前的应用程序的主窗口句柄? 莫名其妙的错误,高手请进(关于头文件出错问题) 10004错误!! 急!!!!把位图拷贝到剪贴板的问题 结构体数据转换成CString or 字符类型的???? 大家看看这个错误,fstream编译错误,名字空间加上了,还是报错 5接近圆了,怎么回事,急死我了!!! 一个关于如何显示文本的问题 怎样判断文件是否结束?
你用delphi写个dll
tvichw32.dll 只提供输出函数名,但不知道参数和功能,怎么办?
EMAIL:[email protected]
[email protected]
另外,DLL和VXD不是一回事。DLL与LIB相对,都包含一些库函数,只不过一个是动态(不连入你的应用程序),一个是静态(连入你的程序)。DLL和应用程序都运行于ring3层,即非特权层,而VXD运行于ring0层,即处于系统核心的特权层。对硬件的控制一般在ring0层进行,即需要特权,因为硬件总是(在特定时间)独占的,不允许应用程序直接控制,否则易引起冲突。但win9x没有对端口进行特权管理,即应用程序可以直接控制。为了防止冲突,也可以写一个VXD对端口控制,应用程序通过VXD间接使用端口,这样可检测和防止不同的应用程序同时使用同一端口引起的冲突。如果你怕麻烦,直接用_inp、_outp操作端口也未尝不可,只要没有其它的程序也使用这个端口。既然能使用_inp、_outp函数,当然就能使用插入汇编的方式直接用in、out指令,例如:
push dx
mov dx, 0x3f8
out dx, 100
pop dx
事实上,_inp、_outp就是这样的代码。