驱动程序是怎么操作硬件设备的



这里以CreateFile API 为例,其他操作设备的API类似。首先应用程序调用CreateFile Api,这个API是由Win32子系统的三大模块中的Kernel32.dll实现的。CreateFile函数会
调用Ntdll.dll中的NtCreateFile函数,其中NtCreateFile是未文档化的函数,最好不要直接调用


NtCreateFile 的作用是穿越用户模式的边界,进入到内核模式,这个步骤是通过软中断实现的。进入内核模式后,会调用系统服务函数,这里会调用同名的系统服务NtCreateFile。(同名函数,一个位于用户模式,一个位于内核模式)


NtCreateFile 系统函数调用通过I/O管理器,创建IRP并传输到设备的驱动程序中。IRP(I/O Request Package)即输入输出请求包,是驱动程序开发中重要的数据结构。驱动程序的运行,完全靠IRP驱动的。


驱动程序根据IRP,进行相应的操作。这些操作一般对设备的直接操作,例如对端口的读操作。对端口的读操作根据不同硬件平台实现方法有所不同,Windows 根据不同的硬件平台,会有不同的HAL(硬件抽象层).


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值