- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
通过设备接口打开设备 详细步骤
一、驱动程序
1.驱动程序框架的创建
(1)用VC建立一个新工程。在VC IDE环境中选择,弹出New对话框。在对话框中,选择Project选项卡。在Project选项卡中,选择Win32 Application 。设置工程名为OpenGuid.如图1所示,单击OK,进入下一个对话框,在对话框中选择一个空的工程。如图2。
图1
图2
(2).新建两个文件GuidOpen.h和GuidOpen.cpp.这两个文件的具体写法,详见程序编写。也可以直接添加现成的已经写好的文件,张帆这本书中,一般都是用的HelloWDM.h和HelloWDM.cpp.
(3).增加新的编译版本,去掉Debug和Release版本。在Build | Configuration如图3和图4。
图3
图4
(4).修改工程属性。选择Project|Setting,在弹出的对话框中,选择General选项卡,将Intermediate files和Output files改为MyDriver_Check,这个名字英语C/C++中,所设置的Fo和Fd后面的文件名相一致。如图5。
图5
将C/C++选项卡中,原有的Project Options内容全部删掉,换成一下内容。
/nologo /Gz /MLd /W3 /WX /Z7 /Od /D WIN32=100 /D_X86_=1 /D WINVER=0x500 /D DBG=1 /Fo"MyDriver_Check/" /Fd"MyDriver_Check/" /FD /c
其中:
/nologo:表示不显示编译的版本信息
/Gz:默认函数调用采用标准调用(_stdcall)
/MLd
/W3:采用第三级警告模式
/WX:将警告信息转换为错误信息,最大程度保证代码可靠
/Z7:用Z7模式产生调试信息?
/Od:关闭调试模式,VC的调试命令不能调试内核下的程序
/D WIN32=100 /D_X86_=1 /D WINVER=0x500 /D DBG=1:定义4个宏(不知道为什么)
/Fo"MyDriver_Check/:MyDriver_Check/为Output Directories中“创建”的文件夹,存放中间生成的目标代码路径
/Fd"MyDriver_Check/": MyDriver_Check/为存放.PDB文件的文件夹
/FD:生成文件依奈
/c:只进行编译,不连接
图6
选择Link选项卡,将原有的Project Options 内容全部删除,替换成如下内容:
wdm.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"MyDriver_Check/GuidOpen.pdb" /debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/GuiOpen.sys" /pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /IGNORE:4078
其中:
wdm.lib:链接WDM库
/nologo:链接时不显示版本信息
/base:"0x10000":加载驱动时,设定加载到虚拟内存的地址
/stack:0x400000,0x1000:设定函数使用堆栈的地址与大小
/entry:"DriverEntry":入口函数的地址(为符合标准函数调用的)
/subsystem:console:设置子系统
/incremental:no:非递曾式链接
/pdb:"MyDriver_Check/GuidOpen.pdb":设置pdb文件的文件名为GuidOpen,保存于MyDriver_Check文件夹下面C/C++属性页中的设置一样。
/debug:以Debug方式链接
/machine:I386:产生代码为386兼容的平台下的
/nodefaultlib:不使用默认的库
/out:"MyDriver_Check/GuidOpen.sys":输出2进制的代码的文件名,保存于MyDriver_Check文件夹下与C/C++属性页中的设置一样。
/pdbtype:sept:设置pdb文件的类型
/subsystem:native:子系统为内核系统
/driver:编译驱动
/SECTION:INIT,D:将INIT的段设置为可抛弃的
/IGNORE:4078:忽略4078号警告错误
图7
(5).修改VC的lib目录和include 目录。
Tools->Options->Directories属性页下的
文档评论(0)