Windows驱动程序开发环境配置

合集下载

驱动开发开发环境搭建

驱动开发开发环境搭建

驱动开发开发环境搭建开发环境搭建2.1 软件平台搭建:Microsoft Visual Studio 2008 , WDK7,VMware Workstation6.5.安装VS2008及MSDN 。

MSDN 可以帮助你更好使⽤VS2008,在出现问题找不到答案时,可以仔细阅读⼀下MSDN ,会提供⼀些必要的帮助。

并且可以通过MSDN免费得到WDK7的下载连接。

VS2008安装步骤略。

下载,安装WDK7,即(Windows Driver Kits 7.0.0)。

提⽰选择安装选项时,建议全部选择安装,WDK便⾃动安装WinDbg(Windows调试⼯具),⽤于使⽤虚拟机对驱动程序代码进⾏调试。

安装步骤略。

安装VMware Workstation.建议选择安装6.0以上版本。

安装步骤略。

安装成功以后新建Windows虚拟机,笔者选择的是WindowsXP系统(其他Windows系统⼤体相同),并安装系统映像,使之成为可以正常⼯作的WindowsXP虚拟系统。

2.2 调试平台搭建:软件平台搭建成功以后,调试平台的搭建需要以下⼏个步骤。

第⼀步,修改WindowsXP虚拟机的系统配置。

1. 修改虚拟机配置。

在硬件中选择添加串⼝。

在连接属性中选择“使⽤命名管道”。

保留默认命名管道名称\\.\pipe\com1。

在串⼝端属性中选择“The end is the server.”,“The other end is an application. ”。

勾选I/0模式中的”Yield CPU on Polled”复选框。

2. 启动虚拟机进⼊WindowsXP系统,打开“我的电脑”窗⼝,在“⼯具”菜单⾥⾯选择“⽂件夹选项”并点击,在⽂件夹选项弹出窗⼝选择“查看”选项卡。

在“⾼级选项”中去除“隐藏受保护的操作系统⽂件”复选框勾选。

并选择“显⽰所有⽂件和⽂件夹“。

确定后系统关闭弹出窗⼝。

3. 打开系统的安装分区,笔者电脑默认安装的C盘。

windows驱动开发和调试环境搭建

windows驱动开发和调试环境搭建

Windows驱动开发和环境搭建【文章标题】: Windows驱动开发和调试的环境设置【文章作者】: haikerenwu【使用工具】: VC6.0,VMware6.0.3,Windbg【电脑配置】: 惠普笔记本xp sp3(一)VMWare安装篇VMWare的安装一路Next即可,关于其序列号,百度一下就能找到,虚拟机安装完成之后,需要安装操作系统,我在虚拟机中安装的是windows xp sp2系统。

点击“文件”----“新建”----“虚拟机”进入新建虚拟机的向导,配置虚拟系统参数选择虚拟系统文件的兼容格式(新手推荐选择默认选项)按照默认设置继续点击下一步,选择好您需要的操作系统,此处我选择的是Windows XP Prefessional。

设置虚拟机名称和虚拟操作系统安装路径,我单独空出来一个F 盘,将虚拟机和虚拟操作系统全部装在该盘。

配置网络模式(推荐选择NA T,一般主机不用做任何的设置虚拟机就可以利用主机上网)。

配置虚拟磁盘的容量。

在这里可以直接单击完成,来完成基本操作设置,磁盘默认空间是8GB,用户可以根据自己的实际使用情况来调整大小,也可以自定义分区。

操作完成之后,在“VM”菜单下有个“setting。

”菜单,点击此菜单,在CD-ROM中选择合适的选项,我使用的是Use ISO image 选项,将我的xp sp2操作系统的ISO映像路径设置好,安装操作系统。

点击ok之后,启动虚拟机,即开始安装操作系统,安装过程跟普通装机过程相同。

安装完成之后,启动操作系统,然后在VM菜单下点击“Install VMWare Tools”,把虚拟操作系统的驱动装好。

(二)VMWare设置篇虚拟操作系统安装完成之后,就是设置该系统为Windbg双机调试做准备。

关闭虚拟操作系统,添加一个虚拟串口,因为我的电脑是笔记本,现在的笔记本很少配置串口,所以要虚拟一个串口,这个过程由VMWare完成,图解如下。

DriverStudio编译Windows驱动程序环境搭建报告

DriverStudio编译Windows驱动程序环境搭建报告

VC6+WDK+DriverStudio编译Windows驱动程序环境搭建报告一、需要的软件及版本Vc6英文版;(随处都有)WDK3790.1830(1830_usa_ddk.iso的解压文件)或者2006.1106版本;DriverStudio3.2。

(随处都有)二、安装说明首先安装Vc6,Vc6正常安装。

第二安装WDK,安装到D:\WINDDK目录下,把所有的例子全部勾选,安装。

WDK的安装比较费时,期间如果已经安装AVAST或者360的话记得在它们提示是否允许时,允许移动文件或允许安装。

最后安装DriverStudio3.2。

建议安装到C盘的默认目录下,以便和以后的文档相对应。

三、参考用书只有一本经典的参考用书,张帆的《Windows驱动开发技术详解》(珍藏版)。

光盘中有很多的参考代码,可以直接使用。

四、用WDK的build工具编译Windows驱动工具位置:开始->Development Kit->Windows DDK3790.1830->BuildEnvironment->Windows XP->Windows XP Checked Build Environment(建议把它发送到桌面方便以后的编译)。

需要的文件:需要cpp,h,SOURCES,MakeFile四种文件。

其中Makefile不用自己编写,需要自己编写SOURCES文件。

编写的具体方法见参考用书。

编译方法:在build工具中把目录切换到工程目录下(如果切换不方便,可以先在D:\WINDDK\3790.1183\下建立一个exam文件夹,然后把工程的目录复制到exam文件夹中,这样可以很方便的切换到工程目录下)。

最后键入:build即可。

编译如果成功后可以在工程目录中找到.sys文件,这个文件就是我们的最终要得到的二进制文件。

五、用VC编译Windows驱动时设置的改动1、新建一个VC工程,选择Win32 Application工程。

WINDOWS 7 配置驱动开发环境(wdk7.60)

WINDOWS 7 配置驱动开发环境(wdk7.60)

WINDOWS 7 配置驱动开发环境(wdk7.60)1. 安装VS2010,WDK7.60(GRMWDK_EN_7600_1)2. 新建VC 控制台项目(选择为空项目)3. 新建项目配置“driver” ,点击下拉按钮-点击(配置管理器)输入名称(Driver Debug)点击确定就可以了,其他的不要动哦!完成后的效果!点击确定按钮之后呈现出来的画面鼠标右击工程选择属性,会弹出以下窗口!4. 设置VC++路径<我把wdk安装在E盘下>a. 配置可执行文件目录:E:\WinDDK\7600.16385.1\bin\x86;b. 配置包含目录:E:\WinDDK\7600.16385.1\inc\ddkE:\WinDDK\7600.16385.1\inc\E:\WinDDK\7600.16385.1\inc\apic. 配置库目录: E:\WinDDK\7600.16385.1\lib\win7\i3865新建C/C++文件不然无C/C++设置选项<刚开始我们创建了一个空的项目所以项目里没有c++文件,现在要做的就是在空的项目-源文件-添加一个新建项c++文件>常规目标文件扩展名:.sys //必选6. 设置C/C++选项常规选项卡1 调试信息格式(C7 兼容(/Z7) //可选2 警告等级(2 级(/W2) //可选3 将警告视为错误(是(/wx) //可选优化选项卡优化(禁用/Od) //可选预处理器预处理器定义:WIN32=100;_X86_=1;WINVER=0x501;DBG=1 //必选如果是Release,那么可想而知,不需要DBG=1代码生成启用最小重新生成:否//可选基本运行时检查:默认值//可选运行时库:多线程调试(/MTd) 或多线程(/MT) //建议选<本人选择的是多线程调试(/MTd)>缓冲区安全检查:否//可选(可避免出现LINK : error LNK2001: 无法解析外部符号__security_cookie)高级调用约定__stdcall(/Gz) //必选7. 链接器设置常规启用增量链接:否(/INCREMENTAL:NO) //建议选上忽略导入库:是// 可选( 设置为此值时,必须在附加库目录中加:E:\WinDDK\7600.16385.1\lib\win7\i3865 这样项目就不会依赖IDE 环境的设置)如果否( 设置为此值时,将依赖IDE 的环境的相关设置)输入附加依赖项ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB //必选//NT式驱动ntoskrnl.lib WDM式驱动wdm.lib( HalXXX 函数在Hal.lib,WmiXXX 函数在wmilib.lib ,NdisXXX函数在ndis.lib ) ( 必要时需要增加微软的标准库MSVCRT.LIB MSVCRTD.LIB(调试库) LIBCMT.LIBIBCMTD.LIB(调试库) )( 如果源码中有source 文件,那么该文件的TARGETLIBS 字段会列出该项目需要的库)忽略所有默认库:是(/NODEFAULTLIB) //必选清单文件:启用用户账户控制(UAC)否//必选不然会出现>LINK : fatal error LNK1295: “/MANIFESTUAC”与“/DRIVER”规范不兼容;链接时不使用“/MANIFESTUAC”调试:生成调试信息是(/DEBUG) //可选生成映像文件:是(/MAP) //可选映像文件名:$(TargetDir)$(TargetName).map //可选系统(System)子系统: 控制台(/SUBSYSTEM:CONSOLE) //必选堆栈保留大小:4194304 //可选堆栈提交大小:4096 //可选驱动程序: 驱动程序(/DRIVER) //必选高级:入口点:DriverEntry //必选随机基址:清空//把框里的数据删掉。

VS下配置Windows驱动开发环境步骤

VS下配置Windows驱动开发环境步骤

VS 2005 下配置Windows 驱动开发环境心得所谓万事开头难,自己参照《windows驱动开发技术详解》、在网上收集一些资料,终于在VS2005成功配置开发环境。

网上大多讲述的是VC6.0 还有就是利用ddkwizard 插件配置环境,VC6.0的配置跟VS2005还是有很大不同的,又因为是初学者觉得用ddkwizard 帮助我们做了很多工作,不利于学习。

所以自己一步步在VS2005配置。

在这里列出仅供参考:预备工作:1、安装了DDK(呵呵,说句废话)。

目录名字最好不要带空格;2、在VS2005中选择“生成”|“配置管理器”---在活动解决方案配置中新建一个方案名(不要Debug、Release);3、选择”工具“|”选项“菜单选择”项目和解决方案“ 选项卡,选择“VC++目录”选项卡在”显示以下内容的目录“下拉菜单中选择”包含文件“菜单添加”"C:\WinDDK\5112\inc\crt", "C:\WinDDK\5112\inc\mfc42", "C:\WinDDK\5112\inc\ddk" 和"C:\WinDDK\5112\inc\api" , 选择”库文件“菜单添加”C:\WinDDK\5112\lib\wxp\i386"。

不同版本的WDM对应中间的数值会不同,我这里是5112, 你的可能不是这个版本,那么这个数值就不同。

接下来就是工程配置属性项4、选择”项目“|”属性“ 弹出”属性页“对话框选择”配置属性“选项卡选择“C/C++”选项卡4.1、再选择”常规“选项卡1、”调试信息格式“选择C7兼容(/Z7)用Z7模式产生调试信息2、取消显示启动版权标志选择是(/nologo) (默认)3、警告等级选择 3 级(/W3)4、将警告视为错误选择是(/WX)4.2、选择”优化“选项卡1、优化选择禁用(/Od)其他默认即可4.3 选择”预处理器“选项卡1、预处理定义编辑WIN32=100;_X86_=1;DBG=1 (WINVER=0x500,是因为你是for 2K的。

Windows 内核驱动调试环境搭建及调试步骤

Windows 内核驱动调试环境搭建及调试步骤

Windows 内核驱动调试环境搭建及调试步骤本文,系09年笔记记录整理,当时只有大概的步骤,最近又搭建环境,顺道比较详细的整理一下,以供自己备查。

较之前的笔记,只是DDK和VMWARE的版本增高了,基本步骤还是大差不差。

注意:如果是初次搭建环境,请大概浏览完全篇后,再参照本文搭建环境。

一、工具描述主机:XP sp3虚拟机:vmware9.0 +XP sp3WinDBGDDK:6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso注:主机:hostOS虚拟机:guestOS代码系《windows驱动开发技术详解》二、具体步骤guestOS设置:添加串口:VM->settings->hardware->add选择 serial设置如下图所示:修改guestOS的boot.ini文件在文件最末行添加如下内容:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /fastdetect /debugport=com2 /baudrate=115200 debugport=com2,要根据你虚拟出来的串口号来设置。

本人电脑里设置的是COM2,如上图所示。

注意:1、boot.ini 文件在C:根目录下,修改booti.in文件时,需要设置文件夹选项,详见下图的标注。

2、波特率进入系统(虚拟机),修改串口的波特率为115200,默认建立的时,波特率是9600。

电脑右键->属性->硬件->属性管理,在弹出的框框里找到COM2修改即可。

虚拟机(guestOS)上的配置基本完成。

hostOS配置:安装DDK版本:6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso,在微软网站可以下载到。

Windows下设备驱动程序的开发方法

Windows下设备驱动程序的开发方法

目录一、驱动开发环境的搭建 (1)1.1 关于DDK (1)1.2 关于驱动程序的编译 (1)1.3关于驱动程序的运行 (2)二、驱动程序的结构 (3)2.1 驱动程序的头文件 (3)2.2 驱动程序的入口点 (3)2.3 创建设备例程 (4)2.4 卸载驱动例程 (5)2.5 派遣例程 (6)三、编写驱动程序的基础知识 (6)3.1 内核模式下的字符串操作 (6)3.2 内核模式下各种开头函数的区别 (8)3.3 一个示例程序 (10)3.4 补充说明 (10)四、在驱动中使用链表 (10)4.1 内存的分配与释放 (10)4.2 使用LIST_ENTRY (12)4.3 使用自旋锁 (12)五、在驱动中读写文件 (15)5.1 使用OBJECT_ATTRIBUTES (15)5.2 创建、打开文件 (16)5.3 读写文件操作 (16)5.4 文件的其它相关操作 (18)六、在驱动中操作注册表 (18)6.1 创建、打开注册表 (19)6.2 读写注册表 (20)6.3 枚举注册表 (21)七、在驱动中获取系统时间 (21)7.1 获取启动毫秒数 (21)7.2 获取系统时间 (22)八、在驱动中创建内核线程 (23)8.1 创建内核线程 (23)8.2 关于线程同步 (24)九、初探IRP (25)9.1 IRP的概念 (25)9.2 IRP的处理 (26)9.3 IRP派遣例程示例 (27)十、驱动程序与应用层的通信 (29)10.1 使用WriteFile通信 (29)10.2 使用DeviceIoControl进行通信 (32)十二、驱动程序开发实例 (33)12.1 NT驱动程序 (33)12.2 WDM驱动程序 (35)十三、参考资料 (41)一、驱动开发环境的搭建1.1 关于DDK开发驱动程序必备的一个东西就是DDK(Device Development Kit,设备驱动开发包),它跟我们在ring3常听到的SDK差不多,只不过它们分别支持开发不同的程序而已。

Windows驱动开发入门

Windows驱动开发入门

接触windows驱动开发有一个月了,感觉Windows驱动编程并不像传说中的那么神秘。

为了更好地为以后的学习打下基础,记录下来这些学习心得,也为像跟我一样致力于驱动开发却苦于没有门路的菜鸟朋友们抛个砖,引个玉。

我的开发环境:Windows xp 主机+ VMW ARE虚拟机(windows 2003 server系统)。

编译环境:WinDDK6001.18002。

代码编辑工具:SourceInsight。

IDE:VS2005/VC6.0。

调试工具:WinDBG,DbgView.exe, SRVINSTW.EXE上面所有工具均来自互联网。

对于初学者,DbgView.exe和SRVINSTW.EXE是非常简单有用的两个工具,一定要装上。

前者用于查看日志信息,后者用于加载驱动。

下面从最简单的helloworld说起吧。

Follow me。

驱动程序的入口函数叫做DriverEntry(PDRIVER_OBJECT pDriverObj,PUNICODE_STRING pRegisgryString)。

两个参数,一个是驱动对象,代表该驱动程序;另一个跟注册表相关,是驱动程序在注册表中的服务名,暂时不用管它。

DriverEntry 类似于C语言中的main函数。

它跟main的差别就是,main完全按照顺序调用的方法执行,所有东西都按照程序员预先设定的顺序依次发生;而DriverEntry则有它自己的规则,程序员只需要填写各个子例程,至于何时调用,谁先调,由操作系统决定。

我想这主要是因为驱动偏底层,而底层与硬件打交道,硬件很多都是通过中断来与操作系统通信,中断的话就比较随机了。

但到了上层应用程序,我们是看不到中断的影子的。

说到中断,驱动程序中可以人为添加软中断,__asm int 3或者Int_3();前者是32位操作系统用的,后者是64位用的。

64位驱动不允许内嵌汇编。

下面是我的一个helloworld的源码:注意第16行的宏。

[0-2]配置驱动开发环境

[0-2]配置驱动开发环境

当确定你的硬件没有问题,那就开始配置“软”的方面。

首先,你要有一台运行WINDOWS 7 X64的电脑,然后还要安装有VS2010和WDK7。

VS2010和WDK7的下载地址分别如下:
如果您不会选择,在安装时选择“完全安装”即可:
至于驱动开发环境的配置,网上有很多的教程,本论坛的网友也发了一个“科普贴”(/bbs/thread-7814-1-1.html)。

但是如果把网上的东西抄下来糊弄大家就没意思了。

我并不喜欢直接用VS开发驱动,而是喜欢直接用记事本进行开发、输入命令进行编译。

我个人用的驱动开发工具是NOTEPAD++(官网:),大家可以上去下载最新版,下载并后安装完毕后,设置一下语言格式(“设置”->“语言格式设置”)。

Notepad++支持代码高亮,这对驱动开发来说就足够了。

NOTEPAD++有个中国人写的代码格式化的开源插件,叫做NppAStyle。

官方首页:/projects/nppastyle。

下载完毕后解压缩,把UNICODE版的NppAStyle.dll复制到C:\Program Files (x86)\Notepad++\plugins目录下。

点开NOTEPAD++的“插件”->“NppAStyle”->“Options”,选择你想要的格式化风格(我喜欢的是ANSI风格)即可。

要格式化的时候,按下Alt+F就能格式化了。

(本文提到的工具或源码,除有版权问题的之外,均可以在论坛上下载。

)。

Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建

Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建

[置顶]Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建(菜鸟的经验)分类:驱动开发2011-08-12 23:30 863人阅读评论(3) 收藏举报自己在研究驱动开发,第一步就是开发环境的搭建,网上已有很多的教程一,我也是按着教程一步一步搭建的,但在搭建过程的过程当中遇到一些问题,也花了我不少时间。

第一个难题就是,我是Windows7+VS2010+WDK的开发环境。

首先我参考了网上的一篇文章:/guojingjia2006/archive/2011/03/19/142211.html WINDOWS 7 配置驱动开发环境(wdk7.60)1. 安装VS2010,WDK7.60(GRMWDK_EN_7600_1)2. 新建VC 控制台项目(选择为空项目)3. 新建项目配置“driver” ,点击下拉按钮-点击(配置管理器)输入名称(driver)点击确定就可以了,其他的不要动哦!完成后的效果!点击确定按钮之后呈现出来的画面鼠标右击新建的driver属性,会弹出以下窗口!4. 设置VC++路径<我把wdk安装在E盘下>a. 配置可执行文件目录:E:\WinDDK\7600.16385.1\bin\x86;b. 配置包含目录:E:\WinDDK\7600.16385.1\inc\ddkE:\WinDDK\7600.16385.1\inc\E:\WinDDK\7600.16385.1\inc\api c. 配置库目录: E:\WinDDK\7600.16385.1\lib\win7\i3865新建C/C++文件不然无C/C++设置选项<刚开始我们创建了一个空的项目所以项目里没有c++文件,现在要做的就是在空的项目-源文件-添加一个新建项c++文件>常规目标文件扩展名:.sys //必选6. 设置C/C++选项常规选项卡1 调试信息格式(C7 兼容(/Z7) //可选2 警告等级(2 级(/W2) //可选3 将警告视为错误(是(/wx) //可选优化选项卡优化(禁用/Od) //可选预处理器预处理器定义:WIN32=100;_X86_=1;WINVER=0x501;DBG=1 //必选代码生成启用最小重新生成:否//可选基本运行时检查:默认值//可选运行时库:多线程调试(/MTd) 或多线程(/MT) //建议选<本人选择的是多线程调试(/MTd)>缓冲区安全检查:否//可选(可避免出现LINK : error LNK2001: 无法解析外部符号__security_cookie)高级调用约定__stdcall(/Gz) //必选7. 链接器设置常规启用增量链接:否(/INCREMENTAL:NO) //建议选上忽略导入库:是// 可选( 设置为此值时,必须在附加库目录中加:E:\WinDDK\7600.16385.1\lib\win7\i3865 这样项目就不会依赖IDE 环境的设置)如果否( 设置为此值时,将依赖IDE 的环境的相关设置)输入附加依赖项ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib; ndis.lib;MSVCRT.LIB;LIBCMT.LIB //必选//NT式驱动ntoskrnl.lib WDM式驱动wdm.lib( HalXXX 函数在Hal.lib,WmiXXX 函数在wmilib.lib ,NdisXXX函数在ndis.lib ) ( 必要时需要增加微软的标准库MSVCRT.LIB MSVCRTD.LIB(调试库)LIBCMT.LIBIBCMTD.LIB(调试库) )( 如果源码中有source 文件,那么该文件的TARGETLIBS 字段会列出该项目需要的库)忽略所有默认库:是(/NODEFAULTLIB) //必选清单文件:启用用户账户控制(UAC)否//必选不然会出现>LINK : fatal error LNK1295:“/MANIFESTUAC”与“/DRIVER”规范不兼容;链接时不使用“/MANIFESTUAC”调试:生成调试信息是(/DEBUG) //可选生成映像文件:是(/MAP) //可选映像文件名:$(TargetDir)$(TargetName).map //可选系统(System)子系统: 控制台(/SUBSYSTEM:CONSOLE) //必选堆栈保留大小:4194304 //可选堆栈提交大小:4096 //可选驱动程序: 驱动程序(/DRIVER) //必选高级:入口点:DriverEntry //必选随机基址:清空//把框里的数据删掉。

开发环境配置要求总结

开发环境配置要求总结

开发环境配置要求总结开发环境配置是进行软件开发的基础工作之一,合理配置开发环境可以提高开发效率,保证开发质量。

本文将总结开发环境配置的要求,帮助开发人员更好地进行开发工作。

一、操作系统要求1. 根据开发需求选择合适的操作系统,如Windows、Linux或macOS。

2. 确保操作系统版本符合开发工具的要求,如Windows 10、Ubuntu 20.04或macOS Big Sur。

二、开发工具要求1. 根据开发语言和平台选择合适的开发工具,如Java开发可以选择Eclipse、IntelliJ IDEA或Visual Studio Code。

2. 确保开发工具的版本符合项目需求,如Eclipse 2021-03、IntelliJ IDEA 2021.1或Visual Studio Code 1.56.2。

三、编程语言要求1. 根据项目需求选择合适的编程语言,如Java、Python或C++。

2. 确保编程语言的版本符合项目要求,如Java 11、Python3.9或C++ 17。

四、开发框架要求1. 根据项目需求选择合适的开发框架,如Spring、Django或React。

2. 确保开发框架的版本符合项目要求,如Spring Framework 5.3.6、Django 3.2或React 17.0.2。

五、数据库要求1. 根据项目需求选择合适的数据库,如MySQL、Oracle或MongoDB。

2. 确保数据库的版本符合项目要求,如MySQL 8.0、Oracle 19c 或MongoDB 4.4。

六、版本控制要求1. 使用合适的版本控制工具进行代码管理,如Git、SVN或Mercurial。

2. 确保版本控制工具的版本符合项目要求,如Git 2.31.1、SVN 1.14.1或Mercurial 5.8.1。

七、构建工具要求1. 使用合适的构建工具进行项目构建和依赖管理,如Maven、Gradle或npm。

李银辉windows驱动开发教程

李银辉windows驱动开发教程

李银辉windows驱动开发教程李银辉Windows驱动开发教程在计算机领域中,驱动程序是操作系统与硬件设备之间的桥梁,起到了关键的作用。

Windows操作系统中的驱动开发,是指为硬件设备编写相应的驱动程序,以实现操作系统与设备的通信和协同工作。

本篇文章将介绍李银辉编写的Windows驱动开发教程,帮助读者了解和掌握该领域的知识和技术。

一、什么是Windows驱动开发?Windows驱动开发是指为Windows操作系统编写设备驱动程序的过程。

驱动程序是操作系统的核心组成部分,负责管理和控制计算机硬件设备的工作。

通过编写驱动程序,可以实现对硬件设备的访问和控制,使其能够与操作系统无缝协同工作。

二、为什么需要学习Windows驱动开发?随着计算机技术的不断发展,硬件设备的种类和数量也在不断增加。

为了更好地支持和兼容各种硬件设备,Windows操作系统提供了丰富的驱动开发接口和工具。

学习Windows驱动开发可以帮助我们理解和掌握操作系统与硬件设备之间的交互原理,为开发高性能、高可靠性的驱动程序提供基础。

三、李银辉Windows驱动开发教程的特点作为国内著名的Windows驱动开发专家,李银辉编写的驱动开发教程具有以下特点:1.系统全面:李银辉的教程从驱动开发的基础知识开始讲解,逐步深入,涵盖了驱动程序开发的方方面面。

读者可以系统地学习和掌握驱动开发的各个环节和技术。

2.实践性强:李银辉的教程以实际案例为基础,通过编写具体的驱动程序来讲解相关的知识和技术。

读者可以通过实际的编程练习,加深对驱动开发原理和方法的理解。

3.案例丰富:李银辉的教程提供了大量的案例代码和实验,覆盖了多种设备类型和应用场景。

这些案例可以帮助读者更好地理解和应用所学知识,提升驱动开发的实际能力。

4.实用性强:李银辉的教程注重实用性,重点介绍了一些常见的驱动开发技术和工具,以及解决实际问题的方法。

读者可以通过学习这些内容,提高自己的驱动开发水平。

图文并茂的超级详细的WIND0WS7加WDF驱动开发环境配置

图文并茂的超级详细的WIND0WS7加WDF驱动开发环境配置

的设 置)
如果否 ( 设置为此值时,将依赖 IDE 的环境的相关设置 )
输入 附加依赖项
ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIB CMT.LIB //必选
//NT 式驱动 ntoskrnl.lib WDM 式驱动 wdm.lib ( HalXXX 函数在 Hal.lib, WmiXXX 函数在 wmilib.lib , NdisXXX 函数 在 ndis.lib ) ( 必要时需要增加微软的标准库 MSVCRT.LIB MSVCRTD.LIB(调试库) LIBCMT.LIBIBCMTD.LIB(调试库) )
其他为建议可选项目
优化: 优化选项可以选择为 已禁用/Od
代码生成: 缓冲区安全检查 否
8. “链接器” 选项卡中
8.1 输入: 在“附加依赖项”中输 入 ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib; MSVCRT.LIB;LIBCMT.LIB
高级
调用约定 __stdcall(/Gz)
//必选
//建议选 <本人
7. 链接器设置
常规
启用增量链接:否(/INCREMENTAL:NO)
//建议 选上
忽略导入库:是
// 可选
( 设置为此值时,必须在附加库目录中加:
E:\WinDDK\7600.16385.1\lib\win7\i3865 这样项目就不会依赖 IDE 环境
这样就会导致另外一个问题,Microsoft Visual Studio 10.0\VC\include\sal.h 中 include 了 CodeAnalysis\sourceannotations.h,所以如果在编译环境中调用 build,会出现错误找不到 sourceannotations.h,所以要:

Windows驱动开发,vs+vm+wdk安装及hello,world

Windows驱动开发,vs+vm+wdk安装及hello,world

Windows驱动开发,vs+vm+wdk安装及hello,world近期接⼿了⼀个关于Windows系统内核驱动的开发任务,⾸先需要的就是熟悉相关开发环境的配置与调试,这⾥采⽤了vs2013+vm2015+wdk8.1的组合,已经亲测完成(踩了⽆数的坑),在此做⼀下记录,下次需要配置环境的时候可以⽤作参考。

vm,wdk,vs等⼯具先下载安装好。

1.⾸先需要安装win7虚拟机,这⾥需要注意系统的镜像需要时虚拟机专⽤镜像,所以在此保存⼀个64位的win7镜像,可直接下载:ed2k://|file|cn_windows_7_enterprise_with_sp1_x64_dvd_u_677685.iso|3265574912|E9DB2607EA3B3540F3FE2E388F8C53C4|/选择配置好虚拟机之后需要⾸先点击设置删除占⽤com1串⼝的打印机,然后添串⾏端⼝将管道命名为\\.\pipe\com_1(如图所⽰)。

2.虚拟机开机后以管理员权限运⾏cmd,输⼊如下命令开启相应串⼝并关闭64位驱动强制签名(64位驱动要求必须有数字签名才可运⾏,但是可以在测试中关闭)bcdedit /debug onbcdedit /dbgsettings serial debugport:n baudrate:115200bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS3.将主机中已安装的wdk⽬录中找到驱动⽬标程序将其复制进虚拟机中安装3.运⾏vs,创建新的空wdm项⽬新建first.c源程序输⼊helloworld代码#include <ntifs.h> //<ntddk.h>VOID DriverUnload(PDRIVER_OBJECT objDriver){// 避免编译器关于未引⽤参数的警告UNREFERENCED_PARAMETER(objDriver);// 什么也不做,只打印⼀⾏字符串DbgPrint("My Dirver is unloading...");}NTSTATUS DriverEntry(PDRIVER_OBJECT objDriver, PUNICODE_STRING strRegPath){// 避免编译器关于未引⽤参数的警告UNREFERENCED_PARAMETER(strRegPath);// 如果编译⽅式为Debug,则插⼊⼀个INT 3指令,⽅便我们调试// 打印⼀⾏字符串,并注册驱动卸载函数,以便于驱动卸载DbgPrint("My First Dirver!\r\n");//KdPrint(("KD My First Dirver!\r\n"));objDriver->DriverUnload = DriverUnload;return STATUS_SUCCESS;}其中两个函数,DriverEntry是程序⼊⼝相当于main,DriverUnload是卸载驱动时执⾏的函数。

Windows10驱动开发系列(一)环境搭建

Windows10驱动开发系列(一)环境搭建

Windows10驱动开发系列(⼀)环境搭建Windows 10驱动开发系列(⼀)环境搭建1. 主机安装或者升级到windows 10系统,安装完后点击开始à设置à系统,可以查看windows版本信息,如笔者安装后查看如下:2. 主机安装vs2015,下载地址如下:安装过程较慢,请耐⼼等候,安装完成后会提⽰安装成功,之后激活vs2015。

在C:\Program Files(x86) \Microsoft Visual Studio 14.0\Common7\IDE下(笔者默认是安装在系统盘下的)双击devenv.exe启动vs2015,点击菜单栏Help->About Microsoft Visual Studio,可看到vs2015版本信息,如笔者安装后查看如下:同时点击License status会显⽰license状况,如未激活,请进⾏激活,否则试⽤期过后就⽆法使⽤vs2015了,如笔者的vs2015已经激活显⽰如下:右击此电脑->属性->⾼级系统设置,点击⾼级选项卡->环境变量,在系统变量中可以查看安装后的环境变量VS140COMNTOOLS , 如笔者查看如下:3. 安装 Windows驱动程序⼯具包 (WDK) 10安装地址:⾸先会下载wdksetup.exe,然后双击此exe进⾏安装,安装成功后打开vs2015,新建⼀个⼯程,可以看到可供创建的驱动程序模板有很多。

Applications模板:Package模板:Devices模板:WDF模板:Legacy模板:WDK 10 包含⽤于为 Windows 10⽣成、测试、调试和部署驱动程序的⼯具。

WDK 10统⼀了对移动和桌⾯设备、通⽤ Windows驱动程序的⽀持,并借助 Visual Studio提供了带有可靠部署和调试设置(包括 WinDbg)的统⼀测试体验。

在集成的环境中,你可以运⾏各种基本认证测试。

Windows驱动开发(中间层)

Windows驱动开发(中间层)

Windows驱动开发(中间层)Windows驱动开发⼀、前⾔依据《Windows内核安全与驱动开发》及MSDN等⽹络质料进⾏学习开发。

⼆、初步环境1、下载安装WDK7.1.0(WinDDK\7600.16385.1)2、下载InstDrv软件(⽤于安装、启动、停⽌、卸载驱动)界⾯如下:注:srvinstw.exe 也可以安装、卸载sys⽂件,但需要⼿动开启、关闭,即在cmd命令窗⼝下执⾏net start 驱动名、net stop 驱动名来启动、停⽌服务。

3、下载DbgWiew.exe 软件(查看内核模块的输出信息)注:详见DebugView的使⽤⽂档。

4、下载64Signer-V1.2(Win7 64位私有测试数字签名软件)5、其他软件:虚拟光驱DAEMON Tools Lite、EasyBCD(系统引导⽂件修复⼯具)、PartitionManager(将C盘设置为活动分区)等三、初步⽰例1、编写⼀个简单的驱动样例(加载、卸载及信息输出等)注:详见TestDriver.c内核模块的⼊⼝是DriverEnter函数,在加载时被系统进程System调⽤。

若想能卸载驱动,必须设置驱动对象的DriverUnload函数指针。

Windows内核编程不是应⽤程序编程,它有⾃⼰的⼀套东西,所有的Win32函数都不能使⽤,部分C Runtime函数也不能使⽤,需要调⽤内核API函数,因此在使⽤函数前,现在帮助⾥查询该函数。

帮助⽂档在“开始”-->“所有程序”-->“Windows Driver Kits”下。

如图:2、使⽤WDK的build⼯具,编译时需要makefile.def和SOURCES⽂件。

1)makfile.def⽂件固定,拷贝⼀份即可,不需要任何改动。

2)SOURCES⽂件内容关联编译那些⽂件及编译出的.sys⽂件的名字等。

WDK的build⼯具在“开始”-->“所有程序”-->“Windows Driver Kits”-->“WDK 7600.16385.1”下,选择要根据本地主机的版本,如:本机是64位的Win7旗舰版,则build⼯具要选x64 Checked build Environment(对应debug)或x64 Free build Environment(对应Release)。

驱动开发环境配置

驱动开发环境配置

Vs2008+wdk7600开发环境搭建最近在研究windows内核编程,一直不习惯用别的IDE和辅助设计工具,所以就多方查询资料最终打造了一个自己的vs2008+WDK7600的内核开发环境,现在将搭建环境的步骤记录下来:1.安装vs2008,可以到微软的官方网站下载使用版(90天)2.安装WDK7600,也是从微软官方下载3.VS环境配置:(1)打开vs2008,选择“工具--选项--项目和解决方案”在右侧平台选择“win32”--“包含文件”,然后在下面添加自己的wdk中的inc相关路径C:\WINDDK\7600.16385.0\inc\wdf\kmdf\1.9C:\WINDDK\7600.16385.0\inc\apiC:\WINDDK\7600.16385.0\inc\crtC:\WINDDK\7600.16385.0\inc\ddk然后选择“win32”--“库文件”添加自己的WDK中LIB路径C:\WINDDK\7600.16385.0\lib\wdf\kmdf\i386\1.9C:\WINDDK\7600.16385.0\lib\wxp\i386(2)选择“新建项目”中的“win32控制台应用程序”或者“win32项目”,输入项目名称后点击“确定”,进入“win32应用程序向导”,选择“空项目”点击“完成”(3)点击“项目--属性”(或者按ALT+F7)进入项目属性页,点击“配置属性”,点击右上角的“配置管理器”,在“活动解决配置方案”中选择“新建”,弹出的窗口中输入自己解决配置方案名,我填的是“checked”,“从此处复制设置”中选“空白”,下面的钩打上,点击“确定”。

(4)下面来配置刚才建立的活动解决配置方案“checked”的“配置属性”:点击“c/c++”--选择“常规”,“调试信息”选:“C7 兼容(/Z7)”,“警告等级”--“3级(/w3)”,“将警告视为错误”--选“是”选择“优化”,“优化”选“禁用(/0d)”选择“预处理器”,“预处理器定义”输入“WIN32=100;_X86_=1;DBG=1”选择“高级”,“调用约定”选“__stdcall (/Gz)”点击“连接器”--选择“常规”,“输出文件”输入“MyChecked_Driver\$(ProjectName).sys”,“启用增量连接”,选“否(/INCREMENTAL:NO)”,“附加库目录”输入“C:\WINDDK\7600.16385.0\lib\wxp\i386”选择“输入”,“附加依赖项”输入“ntoskrnl.lib $(NOINHERIT)”,“忽略所有默认库”选“是(/NODEFAULTLIB)”选择“清单文件”,“启用用户账户控制(UAC)”选“否”选择“调试”,“生成调试信息”选择“是”,“生成程序数据库文件”输入“MyChecked_Driver\$(ProjectName).pdb”选择“系统”,“子系统”选“本机(/SUBSYSTEM:NATIVE)”,“堆栈保留大小”输入“40000”,“堆栈提交大小”输入“1000”,“驱动程序”选“驱动程序(/DRIVER)”选择“高级”,“入口点”输入“DriverEntry”,“基址”输入“0x10000”,“随机基址”选“默认值”,“数据执行保护(DEP)”选“默认值”,“目标计算机”选“MachineX86 (/MACHINE:X86)”(5)进行程序测试,写一段小的测试程序//testDriver.h#ifndef _TESTDRIVER_H#define _TESTDRIVER_H#ifdef __cplusplusextern "C"{#endif#include <ntddk.h>NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject,IN PUNICODE_STRING pRegistryPath);VOID testDriverUnload(IN PDRIVER_OBJECT pDriverObject);#ifdef __cplusplus};#endif#ifdef ALLOC_PRAGMA#pragma alloc_text(INIT, DriverEntry)#pragma alloc_text(PAGE, testDriverUnload)#endif#endif //_TESTDRIVER_H-----------------------------------------------------------------------------------------------------------//testDriver.cpp#include "testDriver.h"NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject,IN PUNICODE_STRING pRegistryPath){KdPrint(("[TAR]: testDriver Entry!\r\n"));NTSTATUS status;pDriverObject->DriverUnload = testDriverUnload;status = STATUS_SUCCESS;return status;}VOID testDriverUnload(IN PDRIVER_OBJECT pDriverObject){KdPrint(("[TAR]: tsetDriver Unloading.....\r\n"));}系统中虚拟机的配置在虚拟机中建立一个系统然后再系统的硬件中添加serial port 然后一直点next 知道最后finish。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Windows驱动程序开发笔记一、WDK与DDK环境最新版的WDK 微软已经不提供下载了这里:https:/// 可以下并且这里有好多好东东!不要走进一个误区:下最新版的就好,虽然最新版是Windows Driver Kit (WDK) 7_0_0,支持windows7,vista 2003 xp等但是它的意思是指在windows7操作系统下安装能编写针对windows xp vista的驱动程序,但是不能在xp 2003环境下安装Windows Driver Kit (WDK) 7_0_0这个高版本,否则你在build的时候会有好多好多的问题.上文build指:首先安装好WDK/DDK,然后进入"开始"->"所有程序"->"Windows Driver Kits"->"WDK XXXX.XXXX.X" ->"Windows XP"->"x86 Checked Build Environment"在弹出来的命令行窗口中输入"Build",让它自动生成所需要的库如果你是要给xp下的开发环境还是老老实实的找针对xp的老版DDK吧,并且xp无WDK 版只有DDK版build自己的demo 有个常见问题: 'jvc' 不是内部或外部命令,也不是可运行的程序。

解决办法:去掉build路径中的空格。

二、下载 WDK 开发包的步骤1、访问Microsoft Connect Web site站点2、使用微软 Passport 账户登录站点3、登录进入之后,点击站点目录链接4、在左侧的类别列表中选择开发人员工具,在右侧打开的类别:开发人员工具目录中找到Windows Driver Kit (WDK) and Windows Driver Framework (WDF)并添加到您的控制面板中5、添加该项完毕后,选择您的控制面板,就可以看到新添加进来的项了。

6、点击Windows Driver Kit (WDK) and Windows Driver Framework (WDF),看到下面有下载链接,OK,下载开始。

下载后的文件名为:6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso将近600M大小。

也可以试试这个地址:/downloads/en/details.aspx?displaylang=en&FamilyID=36a2630f-5d56 -43b5-b996-7633f2ec14ff直接点击下载。

三、安装 WDK 开发包1、使用虚拟光驱加载下载完成的镜像文件,然后运行2、选择相应的系统环境,如下图:3、接触,出现以下画面,在左侧的树形复选框中选择要安装的组件及工具,建议全部安装,选择好后点击―OK‖~~后面的就简单了~4、然后一路回车即可。

5、安装过程的注意事项,只有两点:(1)安装到一个简单一点的路径,避免在特殊情况下需要配置路径时麻烦,比如C:\WinDDK。

尤其要避免在路径上有空格,否则可能出现编译问题。

(2)一定要选择"完全安装",否则可能错过一些代码例子。

四、驱动开发环境搭建(VS2008+WDK+DDKWzard)在VS2008IDE中没有提供驱动开发的项目选项,当然可以用普通工程,然后手动在VS中配制相应的编辑连接以及调试选项,但是如此只来,每次都要重复些复杂的步骤。

在/网站上发现了一个很好用的辅助工具DDKWizard,能够方便地对开发环境进行配置,真是适合想我这样懒人啊,工具的作者也自称是因为懒惰才1、安装DDKWizard1)安装ddkwizard_setup,默认安装,一路Next点过即可,将DDKBUILD.CMD与DDKBUILD.BAT考到WDK的安装目录,或者其它目录也行,只要在后续的设置就行。

如:我将其放在wdk的目录下,如图2)设置环境变量a)添加相应的环境变量,如要开发XP系统下的驱动则添加WXPBASE,变量值为WDK的根目录path :系统变量需将G:\WinDDK添加到Path变量中否则编译时会出现找不到命令的错误新建系统变量变量名:WLHBASE ,图中我加了两个,只需第一个即可。

变量值为:G:\WinDDK\7600.16385.0 修改为你安装的wdk路径如下图b)Win7:2、打开VS 2008,菜单―工具‖->―选项‖->左侧―项目和解决方案‖->―VC++目录‖->右侧―可执行文件‖下拉列表->添加一项D:\WINDDK(根据你的实际情况,就是第1步中DDKBUILD.CMD与DDKBUILD.BAT所在的路径),增加WDK的根目录如图:到目此所有的设置工作都已完成。

自定义安装DDK目录的修改DDKW文件内容替换c:\WINDDK\ddkbuild.cmd为你DDK安装路径,另替换系统对应支持DDK目录,我的安装了最新的WINDOWS7的DDK,替换如图所示。

Win7:3、编写简单的驱动程序并测试我们的驱动开发环境1)在Visual C++选项卡中多了DDK Project的项目类型,选择相应的模板添加我们的项目,点击确定2)确定后出现DDKWzard的项目创建页面,在―Choose the DDKBUILD youwant to use‖中选择―ddkbuild.cmd‖或者―ddkbuild.bat‖,在其下面选择我们要为Who(2000,xp……)开发的驱动。

W7:替换默认路径c:\WINDDK\ddkbuild.cmd为自定义G:\WINDDK\ddkbuild.cmd替换默认路径c:\WINDDK\7600.16385.0 -》g:\WINDDK\7600.16385.0这里可以保持默认设置我这里修改了ddkw的默认设置G:\Program Files\DDKWizard\Wizards\Driver\HTML\1033\default.htm的内容Which <u>D</u>DK(s)/WDK(s) do you want to use:</label><br /><select size="4" id="DDK_CHOICE_LISTBOX" multiple="multiple" style="width:70%;"><option value="3" >Windows 7/2008 Server R2 WDK</option><option value="2">Windows Vista/2008 Server WDK</option><option value="1">Windows 2003 DDK</option><option value="0" selected="selected">Windows XP DDK</option></select>就是<option value="0" selected="selected">Windows XP DDK</option>其他配置(转):对于原版的那个,另我不爽的有以下几点:1,默认cpp,虽然可以改,但是还要点一下。

2,默认选中Create PREfast configuration,不爽。

3,默认选中两个ddk,不爽。

4,代码太乱了。

5,东西太杂了。

4、开始开发1)使其默认不选中" Stricter type checking (.cpp)"打开DDKWizard目录下的DDKWizard.ini文件,做如下修改:checkbox.STRICTERCPP的值为false。

2)不选中“Create PREfast configuration”打开DDKWizard.ini做如下修改:checkbox.PREFASTCONFIG = falsecheckbox.PREFASTCONFIG_ONLYCHECKED = false3)使其只选中一个ddk用记事本打开Wizards\Driver\HTML\1033\Default.htm搜索一下“longhorn”,然后做如下修改:<option value="0">Windows 2000 DDK</option><option value="1">Windows XP DDK</option><option value="2">Windows 2003 DDK</option><option value="3" selected="selected">Longhorn/Vista WDK</option>4)修改模板默认模板在Wizards\Driver\Templates\1033下,形式比较简单,自行参考原版进行修改即可。

需要添加删除文件修改Templates.inf中的相应文件即可,很是方便。

这样搞完以后,就可以一键生成自己熟悉的驱动模板,很爽。

5、最后Finish,这样就可以开始写我们的驱动程序了这里为了演示..我们什么也不做只打印输出"HelloEping"简单驱动程序代码如下注意保存为*.c格式我这里保存为test.c6、复制下面的代码:#include<ntddk.h>VOID DriverUnload(PDRIVER_OBJECT driver){DbgPrint("HelloEping\r\n");}NTSTATUS DriverEntry(PDRIVER_OBJECT driver,PUNICODE_STRING reg_path){DbgPrint("Hello,Eping!");driver->DriverUnload=DriverUnload;return STATUS_SUCCESS;}[ 注意:sources文件中TARGETTYPE= 默认生成的代码需要改为TARGETTYPE=DRIVER SOURCES=默认也为空我把它改成SOURCES=test.c即可成功编译出否则编译成功后你会发现找不到驱动文件。

相关文档
最新文档