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

原创 2013年12月03日 15:08:37



这里以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(硬件抽象层).


设计和编写设备驱动的一般方法

我的上一篇博客《设备驱动调试和移植的一般方法》详细介绍了调试和移植的几个步骤,依照那几个步骤,按部就班,外加不屑的努力,你就可以完成驱动的调试和移植。但是当你面临的是一块崭新的芯片XXXX,当前并没有...
  • zqh2007
  • zqh2007
  • 2014年04月28日 16:33
  • 1204

怎么写Linux驱动

写驱动的工作流程
  • songwater
  • songwater
  • 2014年05月26日 21:33
  • 3658

教你写Linux设备驱动程序:一个简短的教程

摘自:http://blog.chinaunix.net/uid-20799298-id-99675.html 原文为 Writing device driver in Linux:A brief ...
  • chinaclock
  • chinaclock
  • 2015年11月18日 11:16
  • 6019

一个简单的块设备驱动的实现

一个简单的块设备驱动的实现 这篇文章系列来自原创作者:赵磊,感谢这位作者,链接为:http://bbs.chinaunix.net/thread-2017377-1-1.html ...
  • chenglinhust
  • chenglinhust
  • 2013年05月09日 11:23
  • 1673

写一个块设备驱动程序

----------------------- Page 1----------------------- 第 1章 +----------------------------------...
  • leopard21
  • leopard21
  • 2014年03月01日 00:16
  • 1139

Windows驱动开发之第一个驱动程序

一个简单的驱动程序
  • enjoy5512
  • enjoy5512
  • 2016年07月05日 10:18
  • 1135

有或无操作系统的Linux设备驱动区别

一、驱动的作用     任何一个计算机系统的运行都是系统中软硬件协作的结果,没有硬件的软件是空中楼阁,而没有软件的硬件则只是一堆废铁。硬件是底层基础,是所有软件得以运行的平台,代码最终会落实为硬...
  • maochengtao
  • maochengtao
  • 2015年08月24日 19:19
  • 958

USB驱动程序之USB设备驱动程序2鼠标用作键盘学习笔记

1、usbmouse.c (1)在这个probe函数后判断是不是一个鼠标,先得到usb_host_interface结构体,除了端点0外,端点个数如果不是1,返回错误,表示不是自己能支持的设备。如果只...
  • qingkongyeyue
  • qingkongyeyue
  • 2016年12月03日 10:49
  • 564

驱动程序的基本结构

驱动程序的基本结构 1、Windows驱动程序中重要的数据结构 1.1、驱动对象(DRIVER_OBJECT) 每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载的时候,被内核...
  • CSDN515
  • CSDN515
  • 2014年04月07日 19:09
  • 1402

Linux设备驱动程序学习笔记02:编写编译并运行驱动程序

学习一个新东西最好的方式就是去实践它。在实践的过程中会不断遇到问题、产生疑问。解决这些问题的过程就是我们进步成长的过程。 一、如何写驱动程序 在学习C语言的时候有一个著名的hello world程...
  • CheerMoon2009
  • CheerMoon2009
  • 2014年07月19日 22:10
  • 1380
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:驱动程序是怎么操作硬件设备的
举报原因:
原因补充:

(最多只允许输入30个字)