软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
WinCE下对硬件访问的方法

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

HAL能够对硬件访问这是显而易见的,下面说一下应用程序和驱动程序对硬件的访问方法
应用程序和驱动程序对硬件的访问有两种,一种是在用户态,使用VirtualAlloc和VirtualCopy,这两个函数原型为
LPVOID VirtualAlloc(
  LPVOID lpAddress,
  DWORD dwSize,
  DWORD flAllocationType,
  DWORD flProtect
);
BOOL VirtualCopy(

  LPVOID lpvDest,
  LPVOID lpvSrc,
  DWORD cbSize,
  DWORD fdwProtect
);
首先通过VirtualAlloc来获得一段虚拟地址空间的分配,然后VirtualCopy可以将一个虚拟地址绑定到一个物理地址上,从而实现对物理硬件的访问。
这一直是我以为唯一的访问硬件的方法,可是今天看一段源代码的时候,发现了另外一种--IST
IST是运行于内核态的中断处理线程,所以他与内核使用相同的线形虚拟空间,可以非常方便的映射到相应的物理地址。

能够访问硬件的线程是只能由驱动程序创建的,这主要是线程跟创建该线程的进程是共享同一虚拟地址空间的,如果有应用程序创建,它就是与应用程序使用同一空间,很明显访问不到硬件的地址,而驱动程序是被内核初始化,是与内核使用同一空间,因此,它创建的线程就可以直接访问硬件。
很明显,主要是由驱动程序创建的线程,都可以访问到硬件,而不管是不是中断服务线程。如果要做中断服务,该线程就应该与一个相应中断时间挂钩。




相关文章

相关软件