阅读:3571回复:14
怎样在NT下直接读写IO端口
我做了一板ISA口的AD卡,占用的IO口地址是0x100,在NT下怎么对这个端口地址进行读写?
|
|
沙发#
发布于:2001-07-17 20:17
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2001-07-18 07:21
NT中的DriverWork是什么?
我是想在编写一个对话框来进行AD采集,最后再写成DLL供其它程序调用。 |
|
地板#
发布于:2001-07-18 09:11
用户被禁言,该主题自动屏蔽! |
|
地下室#
发布于:2001-07-18 12:45
先做一个sys内核程序,做好读写IO端口的接口,然后可以做一个dll,调用SCManager服务(OpenSCManager);
再启动sys程序。 OpenService( hSCManager, drivername, SERVICE_ALL_ACCESS); |
|
|
5楼#
发布于:2001-07-18 14:00
本站上的相关下载上有undocumented windows NT的源代码,里面有个ntio的例子,在加载了那个编译后.sys后你就可以在ring 3的app里直接调用inp,outp等函数来对端口进行读写。当然,另一个例子有关callgate的也能帮助你完成任务,运行效率比在.sys里读写端口高多了,条件是这个.sys只能在x86机器上运行。
|
|
6楼#
发布于:2001-07-18 16:56
用户被禁言,该主题自动屏蔽! |
|
7楼#
发布于: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); 单步运行到最后一句时就报错了。 请各位大虾多帮忙。 |
|
8楼#
发布于: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); |
|
9楼#
发布于:2001-07-19 08:21
用户被禁言,该主题自动屏蔽! |
|
10楼#
发布于: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加载就可以了。 |
|
11楼#
发布于:2001-07-20 01:26
以前也有过要在nt下读写端口的事情要做,所以上网down了不少
这样的程序,可是没有一个令自己满意的,只好从此开始K驱动了. 惨啊. |
|
12楼#
发布于:2001-07-22 10:35
那请问怎样在我的程序中加载sys
|
|
13楼#
发布于:2001-07-24 00:03
动态加载我还没试过呢,不过有一个用Delphi编的例子里面似乎
做到了,我没仔细去研究 |
|
14楼#
发布于:2001-12-29 10:35
在98下又如何哪?
|
|