windows驱动开发技术详解 笔记
canmeng
我热爱技术。
展开
-
windows操作系统中安装驱动文件时的关于数字签名的知识
在Windows 2000以前的Windows版本中,安装操作系统之外的软件,可能会覆盖掉一些共享的系统文件,例如动态链接库(*.dll文件)、可执行文件(*.exe),这样可能会导致程序运行不稳定、系统出现故障,这主要是由于所谓的DLL陷阱所导致。 为了彻底解决这一问题,在Windows 2000和Windows XP中,微软引入了“Windows文件保护”机制用来防止替换受到保护的系统文件,包括*.sys、*.dll、*.ocx、*.ttf、*.fon、*.exe等类型的文件,Wi转载 2011-05-10 22:32:00 · 6238 阅读 · 0 评论 -
第1章 从两个最简单的驱动谈起
P3 Windows驱动程序分为两类,一类是不支持即插即用功能的NT式驱动程序,另一类是支持即插即用功能的WDM式驱动程序。P4 NT式驱动程序要导入的头文件是NTDDK.h,而WDM式的驱动程序要导入的头文件是WDM.h。P5 因为这里采用C++语言编写,如果直接包含NTDDK.h,函数的符号表会导入错误,所以需要加入extern "C",这样可以保证符号表正确导入。 DriverEnt原创 2011-06-18 17:36:00 · 731 阅读 · 0 评论 -
第3章 Windows驱动编译环境配置、安装及调试
P51 在VC编译器中,默认使用C语言的调用约定。而在Windows驱动程序的编写中,需要使用标准调用约定,尤其是入口函数。P52 默认情况下,编译器会根据源文件的扩展名,来判断使用哪种方式编译。扩展名是.cpp时,使用C++方式编译;扩展名是.c时,使用C编译器方式编译。P53 Windows操作系统规定,在内核模式的程序是无法调用用户模式的程序的,而用户模式的程序可以调用内核模式下的程序(这需原创 2011-06-18 19:43:00 · 800 阅读 · 0 评论 -
第4章 驱动程序的基本结构
P87 每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载的时候,被内核中的对象管理程序创建的。 驱动对象用DRIVER_OBJECT数据结构表示,它作为驱动的一个实例被内核加载(准确的说,是由内核中的I/O管理器负责加载的),并且内核对一个驱动只加载一个实例。P89 每个驱动程序都会创建一个或多个设备对象,用DEVICE_OBJECT数据结构表示。 At原创 2011-06-19 23:55:00 · 741 阅读 · 0 评论 -
第6章 Windows内核函数
P148 在驱动程序开发中,DDK将char和w_char类别,分别替换成CHAR和WCHAR类别。P149 ANSI_STRING字符串与UNICODE_STRING字符串P158 内核模式下的文件操作,这里比较一下内核模式下和用户模式文件的操作。P169 内核模式下的注册表操作原创 2011-06-20 23:33:00 · 503 阅读 · 0 评论 -
第2章 Windows操作驱动的基本概念
P33 线程运行在自己的线程上下文中。线程上下文指的是CPU寄存器的状态,比如堆栈寄存器、指令寄存器等,还包括线程ID、线程的优先级、线程的本地存储等线程相关的信息。 内核的主要作用是调度线程活动,而操作系统的其它组件,如内存管理组件、进程管理组件等作为独立于内核的组件,统称为执行程序组件(或者成为执行体组件)。P34 Windows从总体上分为内核模式(Kernel Mode)和用户原创 2011-06-18 19:13:00 · 780 阅读 · 0 评论 -
第5章 Windows内存管理
P119 Windows的所有程序(包括Ring0和Ring3层的程序)可以操作的都是虚拟内存。 4GB的虚拟内存会被分割成1M个(220个)页,每个页的大小为4KB(212个字节)。其中,有一部分单元会和物理内存对应起来;还有一部分单元会被映射成磁盘上的文件;还有一部分单元什么也没有对应,即空的。P120 Windows操作系统在进程切换时,保持内核模式地址是完全相同的。也就是说原创 2011-06-20 23:20:00 · 630 阅读 · 0 评论