| 
			 
					阅读:3731回复:14
				 
				怎样在NT下直接读写IO端口
					我做了一板ISA口的AD卡,占用的IO口地址是0x100,在NT下怎么对这个端口地址进行读写?				 
							 | 
	|
| 
			 沙发# 
								发布于:2001-12-29 10:35				
			
					在98下又如何哪?				 
							 | 
	|
| 
			 板凳# 
								发布于:2001-07-24 00:03				
			
					动态加载我还没试过呢,不过有一个用Delphi编的例子里面似乎
 
							做到了,我没仔细去研究  | 
	|
| 
			 地板# 
								发布于:2001-07-22 10:35				
			
					那请问怎样在我的程序中加载sys				 
							 | 
	|
| 
			 地下室# 
								发布于:2001-07-20 01:26				
			
					以前也有过要在nt下读写端口的事情要做,所以上网down了不少
 
							这样的程序,可是没有一个令自己满意的,只好从此开始K驱动了. 惨啊.  | 
	|
| 
			 5楼# 
								发布于:2001-07-19 08:57				
			
					[QUOTE]
 
							我运行了其中的测试程序tstio.exe 结果是:Couldn't access giveio device 看了tstio.c 是这条语句没能加载giveio.sys h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); [/B][/QUOTE] 你将i386/free下的GIVEIO.sys用osrloader或者用DS自带的Driver Moniter加载就可以了。  | 
	|
| 
			 6楼# 
								发布于:2001-07-19 08:21				
			用户被禁言,该主题自动屏蔽! 				 | 
	|
| 
			 7楼# 
								发布于:2001-07-18 22:25				
			
					[QUOTE]原本由 dazzy 发表
 
							[B]本站上的相关下载上有undocumented windows NT的源代码,里面有个ntio的例子,在加载了那个编译后.sys后你就可以在ring 3的app里直接调用inp,outp等函数来对端口进行读写。当然,另一个例子有关callgate的也能帮助你完成任务,运行效率比在.sys里读写端口高多了,条件是这个.sys只能在x86机器上运行。 [/B][/QUOTE] 我运行了其中的测试程序tstio.exe 结果是:Couldn't access giveio device 看了tstio.c 是这条语句没能加载giveio.sys h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);  | 
	|
| 
			 8楼# 
								发布于:2001-07-18 17:48				
			
					我要本站上DOWN了一个佚名的一套win下IO端口操作的库WINIO.ZIP
 
							在我调用时它报错 The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. 我调用的源代码如下 PDWORD result HINSTANCE hIn; typedef bool (GetTYPE)(WORD , PDWORD , BYTE ); GetTYPE *pMin=0; VERIFY(hIn=::LoadLibrary("WinIo.dll")); VERIFY(pMin=(GetTYPE*)::GetProcAddress((HMODULE)hIn,"SetPortVal")); bool success; success=(*pMin)(256,result,1); 单步运行到最后一句时就报错了。 请各位大虾多帮忙。  | 
	|
| 
			 9楼# 
								发布于:2001-07-18 16:56				
			用户被禁言,该主题自动屏蔽! 				 | 
	|
| 
			 10楼# 
								发布于:2001-07-18 14:00				
			
					本站上的相关下载上有undocumented windows NT的源代码,里面有个ntio的例子,在加载了那个编译后.sys后你就可以在ring 3的app里直接调用inp,outp等函数来对端口进行读写。当然,另一个例子有关callgate的也能帮助你完成任务,运行效率比在.sys里读写端口高多了,条件是这个.sys只能在x86机器上运行。				 
							 | 
	|
| 
			 11楼# 
								发布于:2001-07-18 12:45				
			
					先做一个sys内核程序,做好读写IO端口的接口,然后可以做一个dll,调用SCManager服务(OpenSCManager);
 
							再启动sys程序。 OpenService( hSCManager, drivername, SERVICE_ALL_ACCESS);  | 
	|
					
						
  | 
	
| 
			 12楼# 
								发布于:2001-07-18 09:11				
			用户被禁言,该主题自动屏蔽! 				 | 
	|
| 
			 13楼# 
								发布于:2001-07-18 07:21				
			
					NT中的DriverWork是什么?
 
							我是想在编写一个对话框来进行AD采集,最后再写成DLL供其它程序调用。  | 
	|
| 
			 14楼# 
								发布于:2001-07-17 20:17				
			用户被禁言,该主题自动屏蔽! 				 | 
	|