zjf1999
驱动牛犊
驱动牛犊
  • 注册日期2001-06-29
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:3571回复:14

怎样在NT下直接读写IO端口

楼主#
更多 发布于:2001-07-17 18:50
我做了一板ISA口的AD卡,占用的IO口地址是0x100,在NT下怎么对这个端口地址进行读写?
lcx119
禁止发言
禁止发言
  • 注册日期2001-07-12
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2330分
  • 威望11503点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2001-07-17 20:17
用户被禁言,该主题自动屏蔽!
zjf1999
驱动牛犊
驱动牛犊
  • 注册日期2001-06-29
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2001-07-18 07:21
NT中的DriverWork是什么?
我是想在编写一个对话框来进行AD采集,最后再写成DLL供其它程序调用。
lcx119
禁止发言
禁止发言
  • 注册日期2001-07-12
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2330分
  • 威望11503点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2001-07-18 09:11
用户被禁言,该主题自动屏蔽!
skysky
驱动小牛
驱动小牛
  • 注册日期2001-07-18
  • 最后登录2003-06-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-07-18 12:45
先做一个sys内核程序,做好读写IO端口的接口,然后可以做一个dll,调用SCManager服务(OpenSCManager);
再启动sys程序。
OpenService( hSCManager,
drivername,
SERVICE_ALL_ACCESS);
以德服人,以德服人
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-07-18 14:00
本站上的相关下载上有undocumented windows NT的源代码,里面有个ntio的例子,在加载了那个编译后.sys后你就可以在ring 3的app里直接调用inp,outp等函数来对端口进行读写。当然,另一个例子有关callgate的也能帮助你完成任务,运行效率比在.sys里读写端口高多了,条件是这个.sys只能在x86机器上运行。
lcx119
禁止发言
禁止发言
  • 注册日期2001-07-12
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2330分
  • 威望11503点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2001-07-18 16:56
用户被禁言,该主题自动屏蔽!
zjf1999
驱动牛犊
驱动牛犊
  • 注册日期2001-06-29
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
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);

单步运行到最后一句时就报错了。
请各位大虾多帮忙。

zjf1999
驱动牛犊
驱动牛犊
  • 注册日期2001-06-29
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
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);
lcx119
禁止发言
禁止发言
  • 注册日期2001-07-12
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2330分
  • 威望11503点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2001-07-19 08:21
用户被禁言,该主题自动屏蔽!
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
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加载就可以了。
Badwood
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2001-07-20 01:26
以前也有过要在nt下读写端口的事情要做,所以上网down了不少
这样的程序,可是没有一个令自己满意的,只好从此开始K驱动了.
惨啊.
zjf1999
驱动牛犊
驱动牛犊
  • 注册日期2001-06-29
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2001-07-22 10:35
那请问怎样在我的程序中加载sys
Badwood
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2001-07-24 00:03
动态加载我还没试过呢,不过有一个用Delphi编的例子里面似乎
做到了,我没仔细去研究
JJY
JJY
驱动牛犊
驱动牛犊
  • 注册日期2001-08-02
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2001-12-29 10:35
在98下又如何哪?
游客

返回顶部