<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/622b662715da9b288b6abe1b/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b662715da9b288b6abe1b/bg1.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">基于<span class="_ _0"> </span><span class="ff2">W<span class="_ _1"></span>inDriver<span class="_ _0"> </span><span class="ff1">的驱动程序的开发</span></span></div><div class="t m0 x1 h4 y3 ff2 fs0 fc0 sc0 ls0 ws0">2009-05-14 22:31</div><div class="t m0 x2 h3 y4 ff1 fs0 fc0 sc0 ls0 ws0">笔者也<span class="_ _2"></span>是第一<span class="_ _2"></span>次开发<span class="_ _2"></span>驱动程<span class="_ _2"></span>序,以<span class="_ _2"></span>下是本<span class="_ _2"></span>人在前<span class="_ _2"></span>段时间<span class="_ _2"></span>驱动开<span class="_ _2"></span>发的一<span class="_ _2"></span>些体会<span class="_ _2"></span>和总结<span class="_ _2"></span>,</div><div class="t m0 x3 h3 y5 ff1 fs0 fc0 sc0 ls0 ws0">也算是<span class="_ _2"></span>做下笔<span class="_ _2"></span>记吧,<span class="_ _2"></span>如果对<span class="_ _2"></span>看到本<span class="_ _2"></span>文的你<span class="_ _2"></span>有帮助<span class="_ _2"></span>的话,<span class="_ _2"></span>本人深<span class="_ _2"></span>感欣慰<span class="_ _2"></span>,很多<span class="_ _2"></span>不足之<span class="_ _2"></span>处,还</div><div class="t m0 x3 h3 y6 ff1 fs0 fc0 sc0 ls0 ws0">恳请高手们能指点一下。</div><div class="t m0 x2 h3 y7 ff1 fs0 fc0 sc0 ls0 ws0">对于驱动程序开发的方式有以下几种:<span class="ff2"> </span></div><div class="t m0 x3 h3 y8 ff2 fs0 fc0 sc0 ls0 ws0"><!--[if !supportLists]-->1<span class="ff1">.</span><span class="fs1"> </span><!--[endif]-->DDK<span class="_ _0"> </span><span class="ff1">开发</span></div><div class="t m0 x3 h3 y9 ff2 fs0 fc0 sc0 ls0 ws0"><!--[if !supportLists]-->2<span class="ff1">.</span><span class="fs1"> </span><!--[endif]-->DrvierStudio</div><div class="t m0 x3 h3 ya ff2 fs0 fc0 sc0 ls0 ws0"><!--[if !supportLists]-->3<span class="ff1">.</span><span class="fs1"> </span><!--[endif]-->W<span class="_ _1"></span>inDriver </div><div class="t m0 x3 h3 yb ff1 fs0 fc0 sc0 ls0 ws0">对于以上几种的开发方式,网络上有比较详细的介绍,在此略为说明一下。</div><div class="t m0 x2 h3 yc ff1 fs0 fc0 sc0 ls0 ws0">使<span class="_ _2"></span>用<span class="_ _0"> </span><span class="ff2">DDK<span class="_"> </span></span>开发<span class="_ _2"></span>的<span class="_ _2"></span>难<span class="_ _2"></span>度<span class="_ _2"></span>比<span class="_ _2"></span>较<span class="_ _2"></span>大,<span class="_ _2"></span>它<span class="_ _2"></span>需<span class="_ _2"></span>要<span class="_ _2"></span>开<span class="_ _2"></span>发人<span class="_ _2"></span>员<span class="_ _2"></span>比<span class="_ _2"></span>较<span class="_ _2"></span>熟<span class="_ _2"></span>悉操<span class="_ _3"></span>作系<span class="_ _2"></span>统<span class="_ _2"></span>的<span class="_ _2"></span>工<span class="_ _2"></span>作<span class="_ _2"></span>原理<span class="_ _2"></span>以<span class="_ _2"></span>及<span class="_ _2"></span>比</div><div class="t m0 x3 h3 yd ff1 fs0 fc0 sc0 ls0 ws0">较专业<span class="_ _2"></span>的硬件<span class="_ _2"></span>知识,<span class="_ _2"></span>一般大<span class="_ _2"></span>牛们都<span class="_ _2"></span>用这种<span class="_ _2"></span>方式来<span class="_ _2"></span>开发驱<span class="_ _2"></span>动程序<span class="_ _2"></span>。就像<span class="_ _2"></span>我们开<span class="_ _2"></span>发应用<span class="_ _2"></span>软件一</div><div class="t m0 x3 h3 ye ff1 fs0 fc0 sc0 ls0 ws0">样,直接使用<span class="_ _0"> </span><span class="ff2">SDK<span class="_ _0"> </span></span>开发应用程序。</div><div class="t m0 x4 h3 yf ff1 fs0 fc0 sc0 ls0 ws0">而使用<span class="_ _0"> </span><span class="ff2">DriverStudio<span class="_ _0"> </span></span>工<span class="_ _2"></span>具开发,相对<span class="_ _2"></span>难度就比较低<span class="_ _2"></span>,不需要像使<span class="_ _2"></span>用<span class="_ _0"> </span><span class="ff2">DDK<span class="_ _0"> </span></span>要求<span class="_ _2"></span>的专业知</div><div class="t m0 x3 h3 y10 ff1 fs0 fc0 sc0 ls0 ws0">识比较高。类似于在应用软件开发中的<span class="_ _0"> </span><span class="ff2">VC<span class="_ _0"> </span></span>开发工具。</div><div class="t m0 x4 h3 y11 ff2 fs0 fc0 sc0 ls0 ws0">W<span class="_ _1"></span>inDriver<span class="_ _0"> </span><span class="ff1">则是<span class="_ _2"></span>这几<span class="_ _2"></span>种开<span class="_ _2"></span>发工<span class="_ _2"></span>具中<span class="_ _2"></span>要求<span class="_ _2"></span>最低<span class="_ _2"></span>的一<span class="_ _2"></span>种,<span class="_ _2"></span>他有<span class="_ _2"></span>相应<span class="_ _2"></span>的<span class="_ _4"> </span></span>W<span class="_ _1"></span>izard<span class="_ _0"> </span><span class="ff1">工<span class="_ _2"></span>具作<span class="_ _2"></span>为驱<span class="_ _2"></span>动</span></div><div class="t m0 x3 h3 y12 ff1 fs0 fc0 sc0 ls0 ws0">开发的引导。类似于应用软件开发工具中的<span class="_ _0"> </span><span class="ff2">VB</span>。</div><div class="t m0 x3 h3 y13 ff2 fs0 fc0 sc0 ls0 ws0">&& <span class="ff1">对于三者以及更多驱动开发工具的介绍,可以去网络上查找更为详细的介绍。</span></div><div class="t m0 x3 h3 y14 ff2 fs0 fc0 sc0 ls0 ws0">&& <span class="_ _2"></span><span class="ff1">由<span class="_ _2"></span>于之<span class="_ _2"></span>前一<span class="_ _2"></span>直在<span class="_ _2"></span>使用<span class="_ _5"> </span></span>VC<span class="_ _0"> </span><span class="ff1">开<span class="_ _2"></span>发应<span class="_ _2"></span>用软<span class="_ _2"></span>件,<span class="_ _2"></span>只是<span class="_ _2"></span>最近<span class="_ _2"></span>一段<span class="_ _2"></span>时间<span class="_ _2"></span>开始<span class="_ _2"></span>做<span class="_ _6"> </span></span>DSP<span class="_ _0"> </span><span class="ff1">中<span class="_ _2"></span>关于<span class="_ _7"> </span></span>PCI<span class="_ _0"> </span><span class="ff1">驱<span class="_ _2"></span>动</span></div><div class="t m0 x3 h3 y15 ff1 fs0 fc0 sc0 ls0 ws0">开发的<span class="_ _2"></span>一小部<span class="_ _2"></span>分工作<span class="_ _2"></span>。所以<span class="_ _2"></span>并没有<span class="_ _2"></span>什么驱<span class="_ _2"></span>动开发<span class="_ _2"></span>基础,<span class="_ _2"></span>对于硬<span class="_ _2"></span>件的了<span class="_ _2"></span>解也还<span class="_ _2"></span>只是停<span class="_ _2"></span>留在本</div><div class="t m0 x3 h3 y16 ff1 fs0 fc0 sc0 ls0 ws0">科课<span class="_ _2"></span>程<span class="_ _2"></span>的微<span class="_ _2"></span>机<span class="_ _2"></span>原理<span class="_ _2"></span>和<span class="_ _2"></span>单片<span class="_ _2"></span>机<span class="_ _2"></span>原理<span class="_ _2"></span>上<span class="_ _2"></span>。为<span class="_ _2"></span>此<span class="_ _2"></span>我选<span class="_ _2"></span>择<span class="_ _2"></span>了使<span class="_ _2"></span>用<span class="_ _6"> </span><span class="ff2">W<span class="_ _1"></span>inDriver<span class="_ _0"> </span><span class="ff1">工<span class="_ _2"></span>具<span class="_ _2"></span>来开<span class="_ _2"></span>发<span class="_ _2"></span>驱动<span class="_ _2"></span>,<span class="_ _2"></span>同时</span></span></div><div class="t m0 x3 h3 y17 ff1 fs0 fc0 sc0 ls0 ws0">也因为<span class="_ _2"></span>这个工<span class="_ _2"></span>具的开<span class="_ _2"></span>发周期<span class="_ _2"></span>相对来<span class="_ _2"></span>说比较<span class="_ _2"></span>短。很<span class="_ _2"></span>多的函<span class="_ _2"></span>数都是<span class="_ _2"></span>封装好<span class="_ _2"></span>了的,<span class="_ _2"></span>直接使<span class="_ _2"></span>用相对</div><div class="t m0 x3 h3 y18 ff1 fs0 fc0 sc0 ls0 ws0">应的<span class="_ _0"> </span><span class="ff2">API<span class="_ _0"> </span></span>函数就可以了,比较符合我个人的口味,<span class="ff2">hoho</span>:)</div><div class="t m0 x3 h3 y19 ff2 fs0 fc0 sc0 ls0 ws0">&& <span class="_ _2"></span><span class="ff1">个<span class="_ _2"></span>人感<span class="_ _2"></span>觉使<span class="_ _2"></span>用<span class="_ _7"> </span></span>API<span class="_ _0"> </span><span class="ff1">函<span class="_ _2"></span>数比<span class="_ _2"></span>使用<span class="_ _7"> </span></span>W<span class="_ _1"></span>inDriver<span class="_ _0"> </span><span class="ff1">自<span class="_ _2"></span>带的<span class="_ _7"> </span></span>W<span class="_ _1"></span>izard<span class="_ _0"> </span><span class="ff1">开<span class="_ _2"></span>发要<span class="_ _2"></span>相对<span class="_ _2"></span>容易<span class="_ _2"></span>点,<span class="_ _2"></span>使用<span class="_ _5"> </span></span>W<span class="_ _1"></span>izard</div><div class="t m0 x3 h3 y1a ff1 fs0 fc0 sc0 ls0 ws0">生成的代码应该需要改不少东西,还是直接使用<span class="_ _0"> </span><span class="ff2">API<span class="_ _0"> </span></span>函数来的清静<span class="ff2">~</span>:)</div><div class="t m0 x3 h3 y1b ff2 fs0 fc0 sc0 ls0 ws0">&& <span class="ff1">好了,讲了不少的废话,开始我们的基于<span class="_ _0"> </span></span>W<span class="_ _1"></span>inDriver<span class="_ _0"> </span><span class="ff1">的驱动开发之旅吧</span>~<span class="ff1">。</span></div><div class="t m0 x5 h3 y1c ff2 fs0 fc0 sc0 ls0 ws0"><!--[if !supportLists]--><span class="ff1">第一,<span class="fs1">ÎÎ<span class="ff2"> </span></span></span><!--[endif]--><span class="ff1">熟悉<span class="_ _0"> </span></span>WinDri<span class="_ _1"></span>ver<span class="_ _7"> </span><span class="ff1">的各种<span class="_ _0"> </span></span>API<span class="_ _0"> </span><span class="ff1">函数。</span></div><div class="t m0 x6 h3 y1d ff1 fs0 fc0 sc0 ls0 ws0">在<span class="_ _7"> </span><span class="ff2">W<span class="_ _1"></span>i<span class="_ _1"></span>nDriver<span class="_"> </span><span class="ff1">软件<span class="_ _2"></span>中<span class="_ _2"></span>自<span class="_ _2"></span>带<span class="_ _2"></span>的<span class="_ _2"></span>帮助<span class="_ _2"></span>文<span class="_ _2"></span>档<span class="_ _2"></span>中<span class="_ _2"></span>有<span class="_ _2"></span>比较<span class="_ _2"></span>详<span class="_ _2"></span>细<span class="_ _2"></span>的<span class="_ _2"></span>介<span class="_ _2"></span>绍<span class="_ _2"></span>。<span class="_ _2"></span>包括<span class="_ _2"></span>如<span class="_ _2"></span>何<span class="_ _2"></span>使<span class="_ _2"></span>用<span class="_ _2"></span>它来</span></span></div><div class="t m0 x6 h3 y1e ff1 fs0 fc0 sc0 ls0 ws0">开发驱<span class="_ _2"></span>动以及<span class="_ _2"></span>各种相<span class="_ _2"></span>关<span class="_ _7"> </span><span class="ff2">API<span class="_ _0"> </span></span>函<span class="_ _2"></span>数等等<span class="_ _2"></span>,有了<span class="_ _2"></span>这个帮<span class="_ _2"></span>助文档<span class="_ _2"></span>就足够<span class="_ _2"></span>了,也<span class="_ _2"></span>不需要</div><div class="t m0 x6 h3 y1f ff1 fs0 fc0 sc0 ls0 ws0">去网络<span class="_ _2"></span>上找什<span class="_ _2"></span>么教程<span class="_ _2"></span>之类的<span class="_ _2"></span>文章了<span class="_ _2"></span>。更为<span class="_ _2"></span>方便的<span class="_ _2"></span>是,在<span class="_ _2"></span>介绍各<span class="_ _2"></span>个<span class="_ _6"> </span><span class="ff2">API<span class="_ _0"> </span></span>函<span class="_ _2"></span>数的时</div><div class="t m0 x6 h3 y20 ff1 fs0 fc0 sc0 ls0 ws0">候,帮<span class="_ _2"></span>助文档<span class="_ _2"></span>还提供<span class="_ _2"></span>了相应<span class="_ _2"></span>的例程<span class="_ _2"></span>,这是<span class="_ _2"></span>很好很<span class="_ _2"></span>方便的<span class="_ _2"></span>一种做<span class="_ _2"></span>法,不<span class="_ _2"></span>是吗,<span class="_ _2"></span>呵</div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>
</body>
</html>