从事驱动开发也有一段时间了,从最初的无头苍蝇到懵懵懂懂,到入门,直至今天,感觉一路走来,走了不少的弯路,只因为没有人引导。前几天,一个朋友问到我怎么学习Windows驱动开发,我就想到把我学习Windows驱动开发的过程分享一下,也算我的一点总结。

我总结了一下,大概分为这么几部分内容:

第一讲:开发环境与工具篇

主要讲述驱动开发的工具、调试的工具,开发环境的配置等知识,通过本篇的学习,您能配置好Windows驱动开发、编译、调试的基本环境,为下一步的开发打下坚实的基础。

第二讲:我的第一个驱动

为了方便驱动开发的学习,我们通过一个简单的驱动程序来直观的了解一下驱动程序的开发。

第三讲:Windows驱动的结构

本篇主要讲解Windows驱动程序的结构,分别讲解NT驱动和WDM驱动程序的结构。然后呢讲解一下驱动程序中的一些重要的数据结构IRP、DriverObject等。

第四讲:基本编程技术

在了解了Windows驱动程序的基本结构之后,我们就需要学习一下基本的编程技巧--内核函数的使用,主要包括字符串的操作、文件的操作、以及常用内核函数的命名特点

第五讲:Windows内存管理

在内核程序开发过程中,内存管理是一个比较重要的项目。本篇主要讲解Windows的内存管理机制,并且使得大家能够掌握如何在驱动中有效的使用内存。

第六讲:同步

同步主要包括两块,驱动程序的同步和IRP的同步

第七讲:定时器

在驱动程序编程中,经常会用到定时器,这一篇将详细的介绍一下定时器的使用和实现。

第八讲:即插即用Pnp

即插即用是WDM驱动的一个重要特性,这是Windows2000以及后续版本的一个重要功能,为此,我们在这一篇中介绍一下驱动程序中如何实现设备的即插即用。

本篇属于开篇的话题,从下一篇起,我们将走近Windows驱动程序的开发。Step by step 学会Windows驱动的开发。

Windows驱动开发入门系列教程相关推荐

  1. windows 驱动开发入门——驱动中的数据结构

    最近在学习驱动编程方面的内容,在这将自己的一些心得分享出来,供大家参考,与大家共同进步,本人学习驱动主要是通过两本书--<独钓寒江 windows安全编程> 和 <windows驱动 ...

  2. Windows驱动开发入门 -- HelloWorld

    一.驱动开发环境搭建 在Download the Windows Driver Kit (WDK)页面中下载最新版本的Visual Studio和WDK进行安装.如果要下载老版本可以到Other WD ...

  3. Windows驱动开发入门 --WDM inf文件模板

    本文主要介绍安装WDM驱动的inf文件如何编写. 由于inf文件的规则比较复杂,写法也比较多样,故本文只介绍通过Visual Studio开发WDM驱动时的inf模板文件的通用写法. 模板文件如下: ...

  4. windows驱动开发学习

    序言]  很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资 料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从 事驱动开发时间不长也不短, ...

  5. windows驱动开发推荐书籍

    [作者]  猪头三  个人网站 :http://www.x86asm.com/ [序言]  很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资 料少有关系.大多学的驱动开 ...

  6. c语言windows驱动编程入门,Windows驱动开发技术详解 PDF扫描版[175MB]

    Windows驱动开发技术详解由浅入深.循序渐进地介绍了windows驱动程序的开发方法与调试技巧.本书共分23章,内容涵盖了windows操作系统的基本原理.nt驱动程序与wdm驱动程序的构造.驱动 ...

  7. 安信Windows驱动开发教程:什么是通用 Windows 平台 (UWP) 应用程序?有什么功能?

    安信Windows驱动开发教程:什么是通用 Windows 平台 (UWP) 应用程序?有什么功能? UWP 是为 Windows 创建客户端应用程序的众多方法之一.UWP 应用使用 WinRT AP ...

  8. Kinect for Windows SDK开发入门

    Kinect for Windows SDK开发入门(一):开发环境配置 首先来看一下Kinect设备: 1. Kinect设备 黑色的Kinect设备如下图:基座和感应器之间有一个电动的马达,通过程 ...

  9. 风辰的CUDA入门系列教程

    风辰的CUDA入门系列教程 1. CUDA简介 GPU是图形处理单元(Graphic Processing Unit)的简称,最初主要用于图形渲染.自九十年代开始,GPU的发展产生了较大的变化,NVI ...

最新文章

  1. java职业发展路线图_Java程序员如何选择未来的职业路线
  2. 为什么阿里巴巴Java开发手册中不允许用Executors去创建线程池?
  3. Winform DataGridView控件添加行号
  4. IComparer实现文件名排序
  5. python引用、浅拷贝、深拷贝
  6. H3CTE讲师分享H3C认证培训实验9 IP基础
  7. 重新学习《C++Primer5》第16章-模板与泛型编程
  8. “变态”的JavaScript——JavaScript的发明人--布兰登·艾奇(Brendan Eich)
  9. 第19章 人口预测
  10. python入门[中国大学mooc笔记][嵩天]
  11. CRMEB多商户系统怎么设置跳转链接
  12. 程序员薪酬,未来的薪酬趋势
  13. python的__str__()方法和__unicode__()方法
  14. python基础-02-基础的数据类型
  15. 【微信小程序】-- 自定义组件 -- 数据、方法和属性(三十三)
  16. react为什么要废弃三个生命周期?
  17. mysql from 嵌套查询_MySQL-10(where /from 嵌套查询)
  18. Redis安装启动和配置文件
  19. SRC-script:挖掘src常用脚本收集
  20. 微软将在新版Edge浏览器中支持广告拦截器

热门文章

  1. U9 一条龙服务(SO-LRP-GreatMo-Dispatch)
  2. 通过Python利用ADSL服务器和tinyproxy构建数据自己的动态代理IP池,用django+redis做web服务,提供IP接口
  3. 人口、共享单车与地铁数据下载网站整理
  4. linux中20个高级命令--【转载自微信公众号入门小站】
  5. mysql中如何取月份_mysql中如何取月份?
  6. 930页!熬夜整理了一份包含算法+数据结构+大厂面经 高分原创文章的电子书送给你
  7. 我的世界无限天空服务器,我的世界1.8-1.12魔塔天空RPG服务器
  8. M4单片机+DM9051NP网卡项目总结
  9. 使用g++和cmake编译thread库报错
  10. stm32创建新工程出现 contains an incorrect path