两个工具

为什么我们先在window 10下搭建,因为现在的电脑的系统普遍都是window
10了,而且我用的也是window 10,所以搭建时有一点是与window
7是不大相似,但是还是一样。至于还有一些用window XP的,一些是Window
8的,大概搭建方法都是大同小异的。

我在这里就提供两个工具(也省得去网上找来找去都找不到合适的)

1.编辑器——-notepad++
 百度云链接:

2.编译器——-MinGW
 百度云链接:

下载到了这两个文件后,进行下面的平台搭建

对于驱动开发的开发指引,微软官方文档网站已经提供了很详细的教程文档,并且在Github上提供了一系列典型的例程源码用于开发人员参考。开发人员在具备一定的驱动概念知识后,通过参考官方例程可以很容易实现拥有特定功能的驱动应用程序。

win10更新系统后,之前连接的服务器都连接不上了,应该用一下方法解决:

检查配置是否完成

我们上期用的Linux系统里面的终端来检查配置情况,那么我们windows中是否有终端呢?答案是有的,那么,终端到底是什么呢?而我们又怎么打开它呢?

首先有两种方法可以进入,一个是通过搜索,一个是通过win(windows键)+R键打开运行框。

windows10的搜索就是这样:

澳门微尼斯人手机版 1没错,cmd命令提示符就是我们在windows中俗称的“终端”,你们应该都知道吧!

没错,而搜索位置就是windows
10中的小娜,有些人可能会用盗版的window10,里面没有这个功能的话,就用win+R就可以了,相比之下我还是喜欢用运行。

澳门微尼斯人手机版 2

打开后就到了传说中,咳咳,也就是大家都见过的cmd(终端)界面。

澳门微尼斯人手机版 3

那我们就检测下吧,输入gcc -v,检查下。

澳门微尼斯人手机版 4

输入cls进行清屏,再输入g++ -v,得到如下图:

澳门微尼斯人手机版 5

上面就是版本号了,这样就可以说明windows平台的搭建终于搭建完成了。

使用INF文件安装

设备相关的驱动安装可以选择INF进行安装,INF安装文件的编写建议从
WDF Sample
中找到合适的INF文件进行修改,如果你想了解INF的语法,可以参考这里

  • 通过设备管理器手工安装

打开控制台,输入 devmgmt
回车,这是打开设备管理器的其中一种方式,其他方式比如右键系统菜单栏图标均可以打开任务管理器,只是使用命令行的方式比较少见,这里特意记录一下。找到感兴趣的
设备节点,右键 属性(或更新驱动程序软件),切换到
驱动程序,可以进行感兴趣的操作。这里所看到所提供的选项,后续等你熟悉了驱动安装的接口后,你会发现都有对应的接口对应每个功能选项。

  • 通过程序实现自动安装

可以参考 WDF Sample
中的Driver Install Frameworks API (DIFxAPI) Sample
Device Console (DevCon) Tool
两个工程,分别提供了不同调用接口的驱动安装方式,Device Console (DevCon) Tool
生成的devcon.exe
是一个功能强大的工具,不仅可用于驱动(包)的安装和卸载,还可以获取设备的硬件ID,描述符以及设备所安装的驱动列表等信息,开发人员可以从中一窥究竟。

在驱动的安装过程中,系统会自动记录安装的日志,在INF目录(路径一般在 C:\Windows\inf下)下可以找到两个日志文件
setupapi.app.logSetupapi.dev.log
,查看这两个日志文件有利于理解驱动安装的执行过程,同时也有利于排查驱动安装过程中出现的异常。

驱动的安装涉及到驱动文件的校验(保证驱动文件的完整性和合法性),驱动的优先级计算(选择最优的驱动去匹配当前识别到的新的设备),驱动的放置目录(Driver
Store)等内容。开发人员熟悉驱动安装逻辑有利于驱动的开发,感兴趣可以通过此处进行了解。

 

   6.  驱动签名

 

首先展示错误信息:

设置环境变量

首先,我们选定此电脑(即我的电脑),右键属性,打开后点击 高级系统设置:

澳门微尼斯人手机版 6

打开后出现这个框,点击下方的环境变量:

澳门微尼斯人手机版 7

进入后请选择path那一项进行编辑,一定要选那一项,选其他的不行。

澳门微尼斯人手机版 8

编辑界面中,转回你打开的那个编译器的文件,把文件地址复制下:

澳门微尼斯人手机版 9

复制后再转回编辑界面,先点击新建,再把刚刚复制的地址复制进去。

澳门微尼斯人手机版 10

澳门微尼斯人手机版 11

澳门微尼斯人手机版,新建完成后点击确定,再次点击确定,即可完成平台的搭建,但想要知道是否有没有效果,那怎么测试呢?还记得上期我们用Linux系统安装编译器后是怎么检查它们是否已经配置了,那我们也一样用同样的方法来检查下吧。

采用的驱动类型关乎到代码的实现(需不需要考虑PNP和电源管理)和驱动的安装(
NT式驱动程序以 service
的形式运行,其他驱动需要采用通用的INF文件安装),微软的官方文档这样提到:

澳门微尼斯人手机版 12

 windows 7的平台搭建

windows
7目前相比之下是稳定性最好的系统,搭建平台的方法大同小异,不过也没什么区别,我会把重复的部分直接话语带过,只给一些不一样的给你们看。

1.编译器文件的解压缩都是一样的,位置呢,我就选择C盘的根目录,这只是个例子,你们最好别把它放在C盘,因为如果电脑出现什么变故的话,要通过C盘恢复数据的话,你放在里面的东西会没有的,要常备份数据。

2.复制地址目录:

澳门微尼斯人手机版 13

3.设置环境变量,点击计算机(我的电脑)右键属性(下面进行一系列的图文表示过程,不作文字描述):

澳门微尼斯人手机版 14澳门微尼斯人手机版 15

 

 澳门微尼斯人手机版 16澳门微尼斯人手机版 17

澳门微尼斯人手机版 18看到了吗?这就是不同的地方,就是特别的麻烦,一连串连起来特别的难看,不过这也是难不倒我的。

澳门微尼斯人手机版 19在这些地址最后面在加个英文状态下的“;”,记住是英文状态下输入,输入后就可以把我们刚复制的地址复制进去,然后点两次确定即可。

3.检查配置情况,其实也是找出cmd,方法都是一样的。

澳门微尼斯人手机版 20也可以通过win+R键通过运行cmd来打开cmd终端,检查结果与上面的一样的。

基于WDF的驱动开发

WDF的开发需要遵循一定的规则,开发实现时需要考虑较多的细节,由于篇幅有限,笔者凭着自己的经验暂且稍做列举,后续将写一篇针对WDF驱动开发的文章。

  • PNP和电源管理(WDF已经帮忙封装了大部分的接口);
  • 各种对象:驱动对象,设备对象,WDF对象,文件对象,队列对象;
  • 驱动上下文:有时称为设备扩展,用于存储特定设备对象的相关信息的数据结构;
  • 对象的释放:需要考虑不同性质对象释放的时机;
  • 中断请求级别:处理不当易导致蓝屏;
  • 分页与非分页内存;
  • 同步锁:回调同步锁、框架等待锁、自旋锁、中断锁等;
  • 日志跟踪记录:
    调试的必备,可以采用 WPP(Windows软件追踪预处理器)或简单的
    DebugPrint 输出
  • 与应用程序的通讯:控制代码、IRQ,请求队列

 

   5.  驱动安装

 

运行
gpedit.msc,打开本地组策略:计算机配置>管理模板>系统>凭据分配>加密Oracle修正,选择启用,选择易受攻击。

零基础学习C语言—Windows平台配置

   4.  实现方式

结尾

好吧,经过一个多小时的编写,让我的兴趣大发,我也喜欢每写完一篇就要写一下结尾感言。你们看了我的博客是不是觉得很啰嗦,觉得有些不必要的可以不要,只取精华的部分,但是如果我这样写的话,就会对一些不懂的人的不负责,太精简的话我甚至十几分钟就写出来,甚至通过复制粘贴就能完成了。但是太精简的话有些人不知道这个步骤是怎么跳出来的,既然我决定要写博客,就要写出让人家看的明白,一目了然,而不是一步到位,中间的某些信息就很容易漏掉。我是一个比较啰嗦的人,我最初写博客的时候都是为了记录我学习C语言的笔记和学习进程,因为我喜欢做笔记,而且笔记也是样样俱全的,十分地详细,所以我写的博文也是十分地详细,我觉得啰嗦可以成为我爱学习的一个优点了,哈哈!

好了,下一期就是进行C语言的编程,还记得今期的编辑器,我们就是要用它来编辑代码,编辑完后保存为C文件,然后通过终端来进行编译,编译出我们最终得到的效果。其实,你们在学习,我也同样在学习,我再不学习更多的话,博客就没什么好写了,好吧,其实还有很多东西可以写的,学习无止境,每时每刻进行充电,这也是人生的乐趣之一吧!

写之不易,请多多支持!

                                                                       
                                                                       
                                                                       
                    2018-06-22  00:13:41

style=”font-family: ‘Microsoft YaHei’;”>有关软件驱动程序,你的两个选项为
KMDF 和内核模式 Windows NT 驱动程序模型。 使用 KMDF 和内核模式 Windows
NT 模型,你可以编写驱动程序,而无需考虑即插即用 (PnP) 和电源管理。
你可以改为专心于驱动程序的首要任务上。 使用 KMDF,你不必考虑 PnP
和电源,因为框架会为你处理 PnP 和电源。 使用内核模式 Windows NT
模型,你不必考虑 PnP 和电源,因为内核模式服务在与 PnP
和电源管理完全无关的环境中运行。

平台搭建

1.首先把编译器压缩包解压缩到
盘符:\(如C:\MinGW 或D:\MinGW 或E:\MinGW ),为什么只放在盘根目录,只是为了下面的操作方便点,当然你也可以放在任意位置也可以,只要等下你能找得出来就行了,我就解压缩到D盘的根目录下,解压后打开里面的查看下:

澳门微尼斯人手机版 21

2.点击bin文件进去:

澳门微尼斯人手机版 22

你可以看到里面有我们需要的两个编译器,但是别以为这样就完了,想要让它们生效,必须要设置环境变量,那环境变量到底在哪里呢?别急,继续往下看。

   1.  前言

Window 10下的搭建

因工作上项目的需要,笔者需要做驱动相关的开发,之前并没有接触过相关的知识,折腾一段时间下来,功能如需实现了,也积累了一些经验和看法,所以在此做番总结。

   
上期我们已经进行Linux的平台搭建,今期我们就来搭建下我们最常用的、最适合初学者的一种方式,那就是搭建Windows平台开发环境,只需要两种工具即可,一个就是编辑器(编辑代码的工具),另一个就是编译器,也就是上期我们在CentOS
7系统所安装的那个gcc 编译器,下面就开始我们的平台搭建吧。

以服务的形式运行

NT式的驱动程序允许以 service
的形式运行, 服务安装的例程可以参考 WDF Sample 中的 Eventdrv
工程,或者参考我写的关于进程网络监控的驱动例程的开源代码

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注