Windows驱动开发工具 WDK 学习笔记(1)

目标:能够把电脑当作一个集成有高性能处理器的开发板用起来,当然,还自带了一个高级的操作系统Windows(必须的)。总之,就是在一个带了操作系统的高性能开发板上的驱动程序开发。

性质:纯属业余爱好

1、昨天下载了WDK 7.1.0 Free版(From MS的正版,需要注册一个Windows Live ID,下载链接http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=36a2630f-5d56-43b5-b996-7633f2ec14ff&displayLang=en)。今天才下载完成,大小619MB,格式ISO。

2、安装时选择了全部的安装选项,因为是Free版,担心可能少一些东西,加上本来对驱动开发不熟悉,干脆全部装上,以绝后患。

3、阅读帮助文档(help目录下的“WDK document”文档),貌似没有中文版,阅读速度缓慢。计划以后慢慢翻译阅读过的内容,作为学习笔记。

4、按照我学习的习惯(兴趣第一),找到一个example先找点感觉再说。学习的第一个例子就是IOCTL,这个最接近嵌入式应用,并且能够自己控制一些东西还是很爽的,虽然只是简单的IO,当然,这让我想起了当年完成的第一个8051实验“跑马灯”,可以带来像初学C语言的人的“hello word”程序一样兴奋。

5、初识驱动开发(我的系统已经安装VC6.0和VS2005):

当然代码是MS写好的。对着文档我编译了一下,并且运行成功而已。

(1)进入WDK安装目录"\WinDDK\7600.16385.1\src\general\ioctl"

(2)复制wdm文件夹到"D:\",作为实验目录。

(3)从“开始”->“所有程序”进入WDM目录下的“Build environment->windows xp”启动“x86 Free Build environment”工具,是基于Dos界面的工具。

(4)进入第(2)步准备好的实验目录wdm,进入“sys”子目录,运行“BLD”命令即可在“sys”目录下生成一个文件夹“objfre_wxp_x86”,里面就有编译后的结果“sioctl.sys”文件。

(5)再回到第(2)步准备好的实验目录wdm,进入“exe”目录,同样按照(4)的命令操作编译程序,得到一个用于测试(4)的编译结果的exe文件名称为“ioctlapp.exe”,把它复制到步骤(4)“sioctl.sys”文件所在的目录,并在dos窗口运行“sioctl.sys”,可以看到驱动程序的输出结果。实验完毕。

(6)阅读步骤(4)实验文件夹的源文件“sioctl.c”、“sioctl.h”,“MAKEFILE”和“sioctl.rc”,领会驱动程序的框架,准备继续的学习(从头开始读手册)。


运行结果:

时间: 2024-09-10 04:54:53

Windows驱动开发工具 WDK 学习笔记(1)的相关文章

Windows Phone 7开发教程(1)——Windows Phone开发工具初体验

这是为<程序员>4月期写的文章,是在<双重惊喜-- Windows Phone Developer Tools初体验>的基础上增加了一些内容, 包括WebBrowser空间.MediaPlayer空间,还有一个非常简单的XNA程序.希望对 Windows Phone开发有兴趣的朋友有一些帮助. Windows Phone开发工具在MIX 2010上火热登场了.Windows Mobile开发者们 压抑许久的热情终于爆发出来,对于Windows Phone的华丽转身,开发者们褒贬 不

Android开发艺术探索学习笔记(七)_Android

第七章 Android动画深入分析  Android的动画分为三种:View动画,帧动画,属性动画.帧动画属于View动画. 7.1 View动画 View动画的作用对象是View,共有四种动画效果:平移(Translate),缩放(Scale),旋转(Rotate),透明度(Alpha). 7.1.1 View动画的种类 View动画的保存路径:res/anim/filename.xml.XML格式语法如下: <?xml version="1.0" encoding="

Android开发艺术探索学习笔记(七)

第七章 Android动画深入分析 Android的动画分为三种:View动画,帧动画,属性动画.帧动画属于View动画. 7.1 View动画 View动画的作用对象是View,共有四种动画效果:平移(Translate),缩放(Scale),旋转(Rotate),透明度(Alpha). 7.1.1 View动画的种类 View动画的保存路径:res/anim/filename.xml.XML格式语法如下: <?xml version="1.0" encoding="

c#中开发ActiveX的学习笔记

1.为什么要用ActiveX? 网页本身的功能是有限的,要想实现一些网页本身不支持的功能,比如:网页上的p2p视频播放,就得靠ActiveX这种古老的技术. 2.c#能开发ActiveX吗? 严格意义上讲,c#是不能生成纯正ocx控件的,我们在vs.net中新建项目时,也找不到专门的"ActiveX项目"新建项,最多也只就能新建"类库"得到一个dll而非ocx(因此我们也无法用传统的regsvr32来注册该dll),但是c#能开发com组件,activeX控件本质上

驱动开发-用WDK开发的驱动在安装时失败(错误39)

问题描述 用WDK开发的驱动在安装时失败(错误39) 我将32位机上的驱动程序移植到了64位机上,但是在安装驱动时报"Windows 无法加载这个硬件的设备驱动程序.驱动程序可能损坏或不见了.(代码39)". 我在Driver Entry里加打印调试信息,在安装驱动时Debug View中也没能显示打印信息. 这种情况一般是哪的问题啊?是inf文件的问题还是驱动代码本身的问题? PS:EzDriverInstaller是不是无法在64位机上使用啊? 解决方案 没错,和应用程序不同,驱动

跨平台移动开发与Hybrid学习笔记

最近做了iOS平台上Hybrid的调研,水平有限,结合以前尝试Hybrid的一点点经验做个小小的分析.概述了跨平台开发的的各种方案,并通过阅读Cordova-iOS和WebViewJavascriptBridge的源码,分析Hybrid的实现原理和设计. 跨平台开发 这可能是移动开发领域的一个迷梦,无数人在用不同的方式想做好这一件事情,现在看起来还没有一套解决方案可以一统江湖.移动领域的跨平台开发可以从几个层面来切入(以下观点给予多年前的调研和最近的整理,出错了欢迎指出). 交叉编译 交叉编译是

自动化运维工具Saltstack学习笔记(二)

前面学习了Saltstack安装和基本的配置,可以通过Saltstack批量执行系统命令,包括系统重启,查看系统负载,添加/删除用户等等.也可以把线上WEB,DB,BBS等安装和配置相同或相近的服务器分为一组,通过Saltstack的group功能批量执行管理.下面通过Saltstack来实现批量安装,卸载RPM软件包,批量分发文件,压缩包和推送目录到指定的minion,定期修改Apache/Nginx/Mysql等配置文件并实施推送到minion. 1.物理环境 2.配置Saltstack m

自动化运维工具Saltstack学习笔记(一)

1.Saltstack简介 Saltstack是一个具备puppet与func功能为一身的集中化,轻量级的自动化运维管理工具,使用python编写,功能非常强大,可以使用EPEL快速安装.相比较puppet,安装和配置更加容易和简单.下面是Saltstack安装和基础配置文档.(官方文档:http://docs.saltstack.com/topics/installation/rhel.html) 2.物理环境 3.安装前准备 修改服务器的主机名和hosts,使其能相互解析和ping通,下面以

《Windows via C/C++》学习笔记 —— 内核对象的“线程同步”之“等待定时器”

等待定时器(waitable timer)是在某个时间或按规定的时间间隔通知自己的内核对象.可以把它理解为一个定时发送信号的东西. 要创建一个等待定时器内核对象,可以调用函数CreateWaitableTimer.可以为该函数赋予不同的参数来指定一个定时器内核对象的属性. HANDLE CreateWaitableTimer(    PSECURITY_ATTRIBUTES psa,    BOOL bManualReset,    PCTSTR pszName);   该函数第一个参数是安全属