Windows驱动开发入门系列教程
从事驱动开发也有一段时间了,从最初的无头苍蝇到懵懵懂懂,到入门,直至今天,感觉一路走来,走了不少的弯路,只因为没有人引导。前几天,一个朋友问到我怎么学习Windows驱动开发,我就想到把我学习Windows驱动开发的过程分享一下,也算我的一点总结。
我总结了一下,大概分为这么几部分内容:
第一讲:开发环境与工具篇
主要讲述驱动开发的工具、调试的工具,开发环境的配置等知识,通过本篇的学习,您能配置好Windows驱动开发、编译、调试的基本环境,为下一步的开发打下坚实的基础。
第二讲:我的第一个驱动
为了方便驱动开发的学习,我们通过一个简单的驱动程序来直观的了解一下驱动程序的开发。
第三讲:Windows驱动的结构
本篇主要讲解Windows驱动程序的结构,分别讲解NT驱动和WDM驱动程序的结构。然后呢讲解一下驱动程序中的一些重要的数据结构IRP、DriverObject等。
第四讲:基本编程技术
在了解了Windows驱动程序的基本结构之后,我们就需要学习一下基本的编程技巧--内核函数的使用,主要包括字符串的操作、文件的操作、以及常用内核函数的命名特点
第五讲:Windows内存管理
在内核程序开发过程中,内存管理是一个比较重要的项目。本篇主要讲解Windows的内存管理机制,并且使得大家能够掌握如何在驱动中有效的使用内存。
第六讲:同步
同步主要包括两块,驱动程序的同步和IRP的同步
第七讲:定时器
在驱动程序编程中,经常会用到定时器,这一篇将详细的介绍一下定时器的使用和实现。
第八讲:即插即用Pnp
即插即用是WDM驱动的一个重要特性,这是Windows2000以及后续版本的一个重要功能,为此,我们在这一篇中介绍一下驱动程序中如何实现设备的即插即用。
本篇属于开篇的话题,从下一篇起,我们将走近Windows驱动程序的开发。Step by step 学会Windows驱动的开发。
Windows驱动开发入门系列教程相关推荐
- windows 驱动开发入门——驱动中的数据结构
最近在学习驱动编程方面的内容,在这将自己的一些心得分享出来,供大家参考,与大家共同进步,本人学习驱动主要是通过两本书--<独钓寒江 windows安全编程> 和 <windows驱动 ...
- Windows驱动开发入门 -- HelloWorld
一.驱动开发环境搭建 在Download the Windows Driver Kit (WDK)页面中下载最新版本的Visual Studio和WDK进行安装.如果要下载老版本可以到Other WD ...
- Windows驱动开发入门 --WDM inf文件模板
本文主要介绍安装WDM驱动的inf文件如何编写. 由于inf文件的规则比较复杂,写法也比较多样,故本文只介绍通过Visual Studio开发WDM驱动时的inf模板文件的通用写法. 模板文件如下: ...
- windows驱动开发学习
序言] 很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资 料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从 事驱动开发时间不长也不短, ...
- windows驱动开发推荐书籍
[作者] 猪头三 个人网站 :http://www.x86asm.com/ [序言] 很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资 料少有关系.大多学的驱动开 ...
- c语言windows驱动编程入门,Windows驱动开发技术详解 PDF扫描版[175MB]
Windows驱动开发技术详解由浅入深.循序渐进地介绍了windows驱动程序的开发方法与调试技巧.本书共分23章,内容涵盖了windows操作系统的基本原理.nt驱动程序与wdm驱动程序的构造.驱动 ...
- 安信Windows驱动开发教程:什么是通用 Windows 平台 (UWP) 应用程序?有什么功能?
安信Windows驱动开发教程:什么是通用 Windows 平台 (UWP) 应用程序?有什么功能? UWP 是为 Windows 创建客户端应用程序的众多方法之一.UWP 应用使用 WinRT AP ...
- Kinect for Windows SDK开发入门
Kinect for Windows SDK开发入门(一):开发环境配置 首先来看一下Kinect设备: 1. Kinect设备 黑色的Kinect设备如下图:基座和感应器之间有一个电动的马达,通过程 ...
- 风辰的CUDA入门系列教程
风辰的CUDA入门系列教程 1. CUDA简介 GPU是图形处理单元(Graphic Processing Unit)的简称,最初主要用于图形渲染.自九十年代开始,GPU的发展产生了较大的变化,NVI ...
最新文章
- java职业发展路线图_Java程序员如何选择未来的职业路线
- 为什么阿里巴巴Java开发手册中不允许用Executors去创建线程池?
- Winform DataGridView控件添加行号
- IComparer实现文件名排序
- python引用、浅拷贝、深拷贝
- H3CTE讲师分享H3C认证培训实验9 IP基础
- 重新学习《C++Primer5》第16章-模板与泛型编程
- “变态”的JavaScript——JavaScript的发明人--布兰登·艾奇(Brendan Eich)
- 第19章 人口预测
- python入门[中国大学mooc笔记][嵩天]
- CRMEB多商户系统怎么设置跳转链接
- 程序员薪酬,未来的薪酬趋势
- python的__str__()方法和__unicode__()方法
- python基础-02-基础的数据类型
- 【微信小程序】-- 自定义组件 -- 数据、方法和属性(三十三)
- react为什么要废弃三个生命周期?
- mysql from 嵌套查询_MySQL-10(where /from 嵌套查询)
- Redis安装启动和配置文件
- SRC-script:挖掘src常用脚本收集
- 微软将在新版Edge浏览器中支持广告拦截器
热门文章
- U9 一条龙服务(SO-LRP-GreatMo-Dispatch)
- 通过Python利用ADSL服务器和tinyproxy构建数据自己的动态代理IP池,用django+redis做web服务,提供IP接口
- 人口、共享单车与地铁数据下载网站整理
- linux中20个高级命令--【转载自微信公众号入门小站】
- mysql中如何取月份_mysql中如何取月份?
- 930页!熬夜整理了一份包含算法+数据结构+大厂面经 高分原创文章的电子书送给你
- 我的世界无限天空服务器,我的世界1.8-1.12魔塔天空RPG服务器
- M4单片机+DM9051NP网卡项目总结
- 使用g++和cmake编译thread库报错
- stm32创建新工程出现 contains an incorrect path