![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
windows驱动编程
疯的世界
这个作者很懒,什么都没留下…
展开
-
驱动程序的同步处理
驱动程序的同步处理Windows是个多任务的操作系统,每个任务对应一个运行的进程。每个运行的进程中可以包含多个线程。如果没有同步机制的控制,所有的线程会任意运行。然而,多个线程可能会要求操作同一个资源,这时就需要同步处理。1、基本概念1.1、问题的引出在支持多线程的操作系统下,有些函数会出现不可重入现象。所谓“可重入”,是指函数的执行结果和执行顺序无关。反之,如果执行结果和执行顺序原创 2014-05-01 19:43:49 · 1726 阅读 · 0 评论 -
解读makefile和source文件
解读makefile和source文件 编译驱动 需要三个文件:源文件(假设只有一个), MAKEFILE, SOURCE总共三个文件。源文件是你的驱动程序了。 MAKEFILE如下:## DO NOT EDIT THIS FILE!!! Edit ./sources. if you want to add a ne转载 2014-03-22 22:30:59 · 3352 阅读 · 0 评论 -
Windows 内核函数
Windows 内核函数因为C语言库是运行的R3应用层上的,而驱动程序是运行的内核模式下的。应用层的函数能调用内核层的函数库,但是内核层的函数由于一些安全性的权限措施,不能调用上层库。所以普通的C语言库是不能在内核模式下运行的,必须使用DDK提供的运行时函数。1、内核模式下的字符串操作1.1、ASCII字符串和宽字符串a)、char型字符串:负责记录ANSI字符集,它指向一个cha原创 2014-04-04 19:32:50 · 3368 阅读 · 0 评论 -
Windows内存管理
Windows内存管理在驱动程序编写中,分配和管理内存不能使用熟知的Win32API函数,取而代之的是DDK提供的高效的内核函数。程序员必须小心地使用这些内存相关的内核函数。因为在内核模式下,操作系统不会检查内存使用的合法性稍有不慎就可能导致操作系统的崩溃。另外,C语言和C++中大多数关于内存操作的运行时函数,大多在内核模式下是无法使用的。1、内存管理概念编写windows驱动之前,需原创 2014-04-05 23:46:50 · 2367 阅读 · 0 评论 -
驱动程序的基本结构
驱动程序的基本结构1、Windows驱动程序中重要的数据结构1.1、驱动对象(DRIVER_OBJECT)每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载的时候,被内核中的对象管理程序所创建的。驱动对象用DRIVER_OBJECT数据结构表示,它作为驱动的一个实例被内核加载并且内核对一个驱动只加载一个实例。确切的说,是由内核中的I/O管理器负责加载的。驱动程序需原创 2014-04-07 19:09:35 · 3157 阅读 · 0 评论 -
IRP派遣函数
派遣函数派遣函数是WIndows驱动程序中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的。用户模式下所有驱动程序的I/O请求,全部由操作系统转化为一个叫IRP的数据结构,不同的IRP会被派遣到不同的派遣函数(Dispatch Function)中。1、IRP与派遣函数IRP的处理机制类似WIndows应用程序中的“消息处理”机制,驱动程原创 2014-04-08 19:23:22 · 2334 阅读 · 0 评论