阅读:4710回复:75
纯为灌水
介绍
突破Windows XP/2000下硬件端口访问的限制。 |
|
|
沙发#
发布于:2003-02-25 20:48
正文 突破Windows XP/2000下硬件端口访问的限制 Windows 9x/ME/NT/2000/XP环境下的直接硬件存取操作 Copyright 1998-2001 Yariv Kaplan http://www.internals.com |
|
|
板凳#
发布于:2003-02-25 20:49
在网上漫游时,偶然间找到一个好工具,但但是下载后没有进行详细研究,后来有网友向我推荐,才好好看看,发现的确是个好东东,这里向大家推荐,希望能够为在这方面遇到困难的朋友提供一点帮助。
|
|
|
地板#
发布于:2003-02-25 20:51
本人在Windows98下曾经编过直接对端口操作的程序,后来在WindowsXP下运行时出错,才想起这个东西,其实是一个外国朋友提供的静态和动态链接库,带有程序源代码。
|
|
|
地下室#
发布于:2003-02-25 20:52
这里给出的是该链接库的说明文件,该因为原文是英文,因此这里将其译成中文,因为匆忙,没有校对,请各位大虾帮助提提意见。这里表示感谢。
|
|
|
5楼#
发布于:2003-02-25 20:53
更详细的技术信息请到相关网站上去找。
|
|
|
6楼#
发布于:2003-02-25 20:55
WinIo程序库允许在32位的Windows应用程序中直接对I/O端口和物理内存进行存取操作。通过使用一种内核模式的设备驱动器和其它几种底层编程技巧,它绕过了Windows系统的保护机制。
|
|
|
7楼#
发布于:2003-02-25 20:56
WinNT/2000/XP下,WinIo函数库只允许被具有管理者权限的应用程序调用。
|
|
|
8楼#
发布于:2003-02-25 20:57
如果使用者不是以管理者的身份进入的,则WinIo DLL不能够被安装,也不能激活WinIO驱动器。
|
|
|
9楼#
发布于:2003-02-25 20:59
通过在管理者权限下安装驱动器软件就可以克服这种限制。
|
|
|
10楼#
发布于:2003-02-25 21:01
然而,在这种情况下,ShutdownWinIo函数不能在应用程序结束之前被调用,因为该函数将WinIo驱动程序从系统注册表中删除。
|
|
|
11楼#
发布于:2003-02-25 21:05
该函数库提供8个函数功能调用:
bool _stdcall InitializeWinIo(); |
|
|
12楼#
发布于:2003-02-25 21:14
本函数初始化WioIO函数库。
必须在调用所有其它功能函数之前调用本函数。 |
|
|
13楼#
发布于:2003-02-25 21:16
如果函数调用成功,返回值为非零值。
如果调用失败,则返回值为0。 |
|
|
14楼#
发布于:2003-02-25 21:25
void _stdcall ShutdownWinIo();
本函数在内存中清除WinIO库 本函数必须在中止应用函数之前或者不再需要WinIO库时调用, b |
|
|
15楼#
发布于:2003-02-25 21:29
bool _stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);
使用此函数从一个输入或输出端口读取一个字节/字/双字数据。 参数: wPortAddr |
|
|
16楼#
发布于:2003-02-25 21:30
bool _stdcall SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);
使用本函数将一个字节/字/双字的数据写入输入或输出接口。 参数: wPortAddr |
|
|
17楼#
发布于:2003-02-25 21:42
PBYTE _stdcall MapPhysToLin(PBYTE pbPhysAddr, DWORD dwPhysSize, HANDLE *pPhysicalMemoryHandle)
使用此函数将物理内存的一部分映射到一个32位应用程序的线性地址空间。 |
|
|
18楼#
发布于:2003-02-25 21:44
下面是一个例子:
PBYTE pbLinAddr; HANDLE PhysicalMemoryHandle; pbLinAddr = MapPhysToLin(0xA0000, 65536, &PhysicalMemoryHandle); |
|
|
19楼#
发布于:2003-02-25 21:45
该函数将把物理地址范围为0xA0000 - 0xAFFFF的地址空间映射到与应用程序对应的线性地址空间。 返回值为一个与物理地址0xA0000相关的线性地址。如果出现错误,则返回值为NULL。
|
|
|
上一页
下一页