如何配置VC编译Windows驱动程序

合集下载

vc++60中开发驱动程序的配置方法

vc++60中开发驱动程序的配置方法

VC++6.0中开发驱动程序的配置方法注意:如果你的电脑中没有安装VC++6.0等软件的话,请先安装 VC++ 6.0 ,再安装DDK,最后安装DriverStudio。

安装顺序一定不要搞错哟。

一、首先创建一个你的驱动工程文件目录。

这个目录下用来放置你的各个驱动工程文件夹。

(比如我在D盘创建了一个D:\PCI9052DVP\PCI9052DRV文件夹作为我的驱动工程文件目录)。

二、然后添加1个用户环境变量,DDKROOT,他的值应该是你所安装DDK的根目录。

(比如在安装DDK时安装到了E:\WINDDK\3790.1830,那么 DDKROOT的值应该为E:\WINDDK\3790.1830)。

添加用户环境变量后电脑需要重启。

如果没有这个用户环境变量,将不会编译任何一个文件。

三、编写一个MakeDrvr.bat批处理文件,如下(可直接copy,不用修改)。

MakeDrvr.bat应该放在工程目录下面D:\PCI9052DVP\PCI9052DRV。

@echo offif "%1"=="" goto usageif "%3"=="" goto usageif not exist %1\bin\setenv.bat goto usagecall %1\bin\setenv %1 %4%2cd %3build -b -w %5 %6 %7 %8 %9goto exit:usageecho usage MakeDrvr DDK_dir Driver_Drive Driver_Dir free/checked [build_options]echo eg MakeDrvr %%DDKROOT%% F: %%WDMWorkshop%% free -cef:exit四、建立一个Makefile工程下面我将要建立一个PCI9052DRV的工程。

Windows驱动程序开发环境配置

Windows驱动程序开发环境配置

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、添加该项完毕后,选择您的控制面板,就可以看到新添加进来的项了。

VC编写驱动方法

VC编写驱动方法

VC编写驱动方法编写VC驱动方法在VC开发中,驱动方法是一种非常重要的处理方式。

它可以帮助程序员更好地管理代码,增加代码的可读性以及可维护性。

下面将介绍一些常用的VC驱动方法。

1.初始化方法初始化方法是驱动程序启动时最先调用的方法,在这个方法中可以进行一些初始化操作,比如初始化一些全局变量、分配内存等。

在VC中,一般使用WinMain函数或者OnInitDialog方法来实现初始化。

2.事件处理方法事件处理方法是用来处理操作系统或者用户输入的事件的方法,比如鼠标点击事件、键盘按键事件等。

在VC中,可以通过添加事件响应函数来实现事件处理方法。

在这些方法中,可以根据事件的类型和参数来做出不同的反应。

3.获取数据方法获取数据方法是用来从外部或者数据库中获取数据的方法,比如从文件中读取配置信息、从网络中获取数据等。

这些方法可以根据需要进行适当的封装,例如提供参数来指定从哪个文件中读取配置信息,或者提供一个回调函数来处理网络数据。

4.更新数据方法更新数据方法是用来向外部或者数据库中写入数据的方法,比如向文件中写入日志信息、向数据库中插入新的记录等。

这些方法可以根据需要进行适当的封装,例如提供参数来指定要写入的文件或者数据库的位置,或者提供一个回调函数来处理写入的结果。

5.计算方法计算方法是用来进行一些数学或者逻辑计算的方法,比如计算两个数的和、判断一个数是否为质数等。

在VC中,可以将这些方法放在一个单独的类或者模块中,方便调用。

另外,为了增加代码的可读性,可以添加注释来说明计算的过程和结果。

6.绘制方法绘制方法是用来在屏幕上绘制图形或者文本的方法,比如绘制一个按钮、一个文本框等。

在VC中,可以通过使用GDI+库来实现绘制方法。

在这些方法中,可以使用各种图形和绘制函数来实现特定的绘制效果。

7.保存方法保存方法是用来将程序状态或者数据保存到磁盘或者其他设备中的方法,比如保存程序的配置信息、保存用户输入的数据等。

使用VC6.0 DDK编译驱动程序的实用技巧详解(经典总结版)

使用VC6.0 DDK编译驱动程序的实用技巧详解(经典总结版)

VC6编译驱动的方法(含32和64位)设计初衷我对VC6较熟悉,尤其喜欢他的Go To Definition的右键功能,我可以随时找到我程序中用到的函数,结构体等详细信息,可以知道他在哪个头文件中。

但我以前写的一篇用makefile 来创建的工程虽然可以在VC6下编译驱动,但是在编程时想查找一下某个函数或结构,总要借助于DDK的帮助文档来查看,实在不方便!带着一点试试的想法,居然我在VC6下也可以象做应用程序一样的开发驱动。

总之,这是利用了VC6的IDE环境,用了VC6下的一些工具(BSCMAKE.EXE),又利用了DDK下的编译工具,MAKE程序来实现的。

就是按下VC6下的编译命令,我需要调用的编译器,连接器应该是DDK下的,而其他工具我还是用VC6自带的。

这样,我居然成功了。

下面将方法分享给大家,有不正确的地方还请指教。

准备工作首先,如果你使用的是WINXPDDK,那么安装之后(默认安装在c 盘),找到C:\WINDDK\2600\bin\x86。

然后,如果你安装了VC6,那么到C:\Program Files\Microsoft Visual Studio\VC98下,你会看到一个bin 文件夹,我们将这个文件夹先改名为binVC6。

然后我们创建一个新的bin文件夹。

将C:\WINDDK\2600\bin\x86文件夹下的所有文件拷贝到C:\ProgramFiles\MicrosoftVisual Studio\VC98\bin 目录下。

注意:这个bin 目录是我们新建的,原来VC6自带的BIN 文件夹我们已经改成了BINVC6。

将C:\Program Files\Microsoft Visual Studio\VC98\BINVC6下的文件复制,然后粘贴到C:\Program Files\Microsoft Visual Studio\VC98\bin 目录下,注意:系统提示是否覆盖时,请选择不覆盖!这样VC6编译的时候会使用DDK所带的ML,CL,LINK等程序编译驱动。

VC6.0+WDK开发驱动的环境配置

VC6.0+WDK开发驱动的环境配置

VC6.0+WDK开发驱动的环境配置1.安装好VC6和DWK,先后顺序⽆关。

从开始菜单找到WDK的程序⽬录,进⼊“Windows XP Checked Build Environment”,输⼊命令"build",此时WDK将会把⾃⼰进⾏编译,⼤约需要1分钟。

2.VC6设置Include/Lib/Executable⽬录。

设置为⾃⼰需要编译的平台的各个⽬录即可, Include要确保找到ntddk.h等,Lib与Include对应,Executable 要确保能找到cl.exe例如XP平台下设置为:include包含部分:C:\WinDDK\7600.16385.1\inc\ddkC:\WinDDK\7600.16385.1\inc\apiC:\WinDDK\7600.16385.1\inc\crtlib连接库包含部分:C:\WINDDK\7600.16385.1\LIB\WXP\I386C:\WINDDK\7600.16385.1\LIB\WIN7\I386执⾏⽂件包含:C:\WINDDK\7600.16385.1\BINC:\WINDDK\7600.16385.1\BIN\X86C:\WinDDK\7600.16385.1\bin\x86\x86对于VC原有的路径,Include 和 Lib建议都删除掉,⽽Executable则将你新加的置顶,顺序不能错。

其余建议保留(虽然编译驱动不会使⽤VC的Bin⽬录下的ml.exe、link.exe 等,但vc的代码提⽰等功能是需要bin⽬录下的⼀些程序来完成的,因此还是⾄少要保留VC原有的Bin⽬录,但必须在DDK的之后)。

3.建⽴⼀个空⼯程,Exe或者Dll都可以,然后直接修改⼯程属性:要改的地⽅不少,描述各个选项还不如直接记录个⽂本的,清空C/C++和Link下⾯的Option⽂本框,按下⾯的填写。

C/C++ 选项填写:/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 /cLINK 选项填写:NT式驱动为ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"MyDriver_Check/HelloDDK.pdb" /map:"MyDriver_Check/HelloDDK.map" /de WDM式驱动为wdm.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"SYS_Check/HelloWDM.pdb" /debug /machine:I386 /nodefaultlib /out:"SYS_Che 4.保存配置,现在给这个空⼯程建⼀个c⽂件,复制以下内容:#include <ntddk.h>NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath){NTSTATUS status = STATUS_UNSUCCESSFUL;return status;}编译通过则配置成功----------------------------------------------------------------------------------------------Vc6 英⽂版;(随处都有)WDK3790.1830(1830_usa_ddk.iso的解压⽂件)或者2006.1106版本;DriverStudio3.2 。

基于windows的c++驱动程序编写过程

基于windows的c++驱动程序编写过程

基于windows的c++驱动程序编写过程在 Windows 操作系统上编写 C++驱动程序需要遵循特定的步骤和使用相关的工具。

以下是一般的编写过程概述:1. 选择驱动程序类型:首先,你需要确定要编写的驱动程序类型,例如设备驱动程序、文件系统驱动程序或网络驱动程序等。

不同类型的驱动程序有不同的功能和要求。

2. 了解 Windows 驱动模型:Windows 提供了两种主要的驱动模型:WDM(Windows Driver Model)和 KMDF(Kernel-Mode Driver Framework)。

WDM 是较旧的驱动模型,而 KMDF 是推荐使用的现代驱动模型。

了解所选择的驱动模型的架构和概念对于编写驱动程序非常重要。

3. 安装开发工具和头文件:你需要安装适当的开发工具,如 Visual Studio,以及相关的 Windows 驱动开发工具包(DDK)或 Windows Driver Kit(WDK)。

这些工具包提供了必要的头文件和库文件。

4. 创建驱动程序项目:使用开发工具创建一个驱动程序项目。

你可以选择创建一个空项目或使用驱动程序模板。

5. 编写驱动程序代码:根据所选择的驱动模型,编写驱动程序的功能代码。

这包括设备初始化、设备控制、数据传输等。

你需要使用相关的 Windows API 和驱动程序特定的函数来实现所需的功能。

6. 配置驱动程序属性:在项目属性中,设置驱动程序的相关属性,如驱动程序类型、版本号、制造商等。

7. 构建和调试驱动程序:使用开发工具构建驱动程序,并进行调试。

你可以使用调试器来检查代码的执行情况,并解决可能出现的问题。

8. 测试和部署驱动程序:在开发环境中测试驱动程序,确保其正常工作。

然后,你可以将驱动程序安装到实际的设备上进行测试。

需要注意的是,编写 Windows 驱动程序需要深入了解操作系统的内部机制和相关的编程概念。

此外,驱动程序的开发和调试过程可能比较复杂,需要耐心和经验。

vc++ 编程实例

vc++ 编程实例

以下是一个简单的VC++编程实例,它演示了如何使用VC++创建一个Windows应用程序,并在其中添加一个按钮和一个文本框。

1. 打开Visual Studio并创建一个新的Windows应用程序项目。

2. 在“解决方案资源管理器”中,右键单击项目并选择“添加”->“新建项”。

3. 在“添加新项”对话框中,选择“Windows窗体”并命名为“Form1”。

4. 在Form1的设计视图中,从工具箱中拖动一个按钮和一个文本框控件到Form1上。

5. 双击按钮控件以生成其单击事件处理程序。

6. 在按钮的单击事件处理程序中,编写以下代码:
```c++
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
// 在文本框中显示按钮的文本
textBox1->Text = "你点击了按钮";
}
```
7. 保存并编译项目。

这个应用程序将在运行时显示一个包含按钮和文本框的窗口。

当用户单击按钮时,文本框将显示消息“你点击了按钮”。

vc2010的使用方法

vc2010的使用方法

vc2010的使用方法VC2010是微软公司推出的一款集成开发环境(Integrated Development Environment, IDE),用于开发基于Windows操作系统的应用程序。

本文将介绍VC2010的使用方法,帮助读者快速上手并熟练运用该开发环境。

一、VC2010的安装和配置1. 下载VC2010安装包,双击运行安装程序。

按照提示选择安装目录和组件,建议选择完整安装以获得更多的功能和工具。

2. 安装完成后,打开VC2010。

首次打开时,会弹出一个“开始页面”,其中包含了最近打开的项目、新建项目的模板等信息。

可以根据需要选择打开项目或新建项目。

3. 配置编译器和调试器:点击菜单栏上的“工具”-“选项”,在弹出的对话框中选择“项目和解决方案”-“VC++目录”,可以配置编译器和调试器所需的文件和路径。

二、新建项目1. 在VC2010中,可以通过菜单栏上的“文件”-“新建”-“项目”来创建一个新项目。

在弹出的对话框中,可以选择项目类型和模板。

2. 选择项目类型:根据具体需求选择相应的项目类型,比如Windows桌面应用程序、控制台应用程序、动态链接库等。

3. 选择模板:根据项目类型选择所需的模板。

模板包括空项目、基于DLL的MFC应用程序、Win32控制台应用程序等。

4. 指定项目名称和保存路径,并点击“确定”按钮。

VC2010将自动生成一个项目文件夹,并在其中创建项目文件和相应的代码文件。

三、编辑和编译代码1. 打开项目后,可以在“解决方案资源管理器”中看到项目的文件结构。

在源文件中,可以编写代码。

2. VC2010支持多种编程语言,比如C++、C#等。

根据项目需求,选择相应的编程语言进行开发。

3. 在编辑器中编写代码,可以使用智能感知和自动补全等功能,提高编码效率。

同时,VC2010还提供了丰富的调试工具,可以帮助开发者快速定位和解决问题。

4. 编写完成后,点击菜单栏上的“生成”-“生成解决方案”来编译项目。

VC6编译驱动的方法(含32和64位)

VC6编译驱动的方法(含32和64位)

VC6编译驱动的方法(含32和64位)2009-04-07 10:58 2374人阅读评论(2) 收藏举报/logs/33757789.html本来用系统自带的build命令编译后来发现Windows驱动开发技术详解上说用VC6可以编译,一直操作到了最后,一编译居然发现没有编译通过,于是在网上google了下,发现了别人的方法,看到中间的步骤就发现出问题来了,书中的是拿win2k的DDK做例子,可是装的XP的DDK是编译有问题的,晕,问题出在哪里呢?也就是Directories的Executable files应该把XP的DDK的Bin/X86目录添加进去,不然版本低了编译不了了,书上也没个提示.添加以后就编译成功了/linuxpgy/archive/2008/05/11/2434572.aspxVC6只是一个IDE,可以方便的调用编译器,链接器,头文件,库文件,如果编辑和编译驱动能集成在一起,这样可以提高开发效率。

对于普通的Win32应用程序,VC6已经默认支持了,而对于驱动程序没有设定好的工程向导。

其实驱动程序也就是一个sys,是通过c语言写成,所以编译它理论上没有问题,只是在实际操作上有点麻烦。

下面就来说明一下各种平台编译sys驱动的方法(包括64位平台)先看32位版本驱动的编译方法,首先你得准备一些编译必备工具:1.要安装VC62.安装DDK(装哪个呢?这个问题其实很简单的,只是很多人不明白,装DDK当然是越新越好了,越新支持的平台越多,像2000DDK 你是绝对编译不出来64位sys的,因为它没带64位的库和编译器,所以我们选择现在最比较新的,2003DDK(WDK也可以),支持的平台很多,AMD64,IA64,2000,XP,2003都支持)。

好了,这下我们的系统已经安装了最强的开发工具VC6,最新DDK,在VC里编译各个平台的驱动都没有问题了!开始,假设我们的DDK装在C:/2003DDK目录,那么我会发现里面有很多驱动的例子(安装的时候全选),我们选择C:/2003DDK/src/wdm/usb/bulkusb作为我们的实验范例。

配置驱动环境

配置驱动环境

配置驱动环境(vc6.0,ddk,driverstudio)2009-12-24 11:08需要安装软件:1. Microsoft visual c++2. windows driver development kit(ddk)3. Compuware Driverstudio(必须按顺序装)配置ddk环境:在系统环境变量中添加BASEDIR=安装DDK的路径安装driverstudio后vc++中后出现driverstudio菜单,选则driverstudio->ddk buide settings,在ddk root directory中填写ddk的安装路径。

之后就可以用在vc++中编译驱动了(build with build.exe)。

(需要有makefile 和sources文件)配置driverstudio:编译driverstudio的例子必须先编译对应的库dirverworks需先编译vdwlibs.dsw和NdisWdm.dswdirvernetworks需先编译DNW.dsw编译时在vc++中选择build->batch Build,选select x86,然后build或rebuild all.(以上环境为win2000,vc++6.0,win2000 ddk,driverstudio3.1)/logs/2428315.html/chwb/216998/message.aspx我使用的是WinXP SP2+DS3.2+XP DDK+VC6.0英文版,以下为DS3.2版本的安装过程:1.安装英文原版Visual studio 6.0,同时要记住注册环境变量。

2.安装XPDDK,安装时候注意需要将所有的组件、工具、例子等都安装(避免出现头文件和链接库找不到的问题);3.安装DS3.2;4.通过DriverStudio菜单{C:\Documents and Settings\All Users\「开始」菜单\程序\Compuware DriverStudio\Develop}下的DDK Build Settings子菜单启动VC,不要去点桌面上的快捷方式。

VS2024编译C语言程序详细步骤

VS2024编译C语言程序详细步骤

VS2024编译C语言程序详细步骤在VS2024中编译C语言程序的详细步骤如下:1. 打开Visual Studio 2024软件。

在开始菜单中找到VS2024并点击打开。

2. 创建一个新的C语言项目。

在Visual Studio的开始界面上,点击“创建新项目”按钮,选择“C”语言选项,并选择“控制台应用程序”模板。

3.给项目命名并选择保存位置。

在弹出的对话框中,输入项目名称和选择保存位置,然后点击“确定”按钮。

4. 配置项目属性。

在弹出的项目属性窗口中,选择合适的编译器版本和目标平台。

在“常规”选项卡上,可以选择生成的目标为“控制台应用程序”或“Windows应用程序”等。

其他选项可以根据需要进行调整。

5.编写C语言源代码。

在VS2024的主界面上方的工作区内,打开项目文件夹,找到“源文件”文件夹,在此文件夹内右键点击打开菜单,选择“添加”->“新建项”。

在弹出的对话框中选择“C文件”并命名,点击“添加”按钮。

在新建的C文件中编写C语言的源代码。

6.编译源代码。

点击菜单栏中的“生成”->“生成解决方案”选项。

VS2024将会编译源代码并生成可执行文件。

生成的可执行文件可以在输出目录下找到。

7.调试程序。

在项目中加入合适的调试点或断点,点击菜单栏中的“调试”->“开始调试”选项。

VS2024将会运行程序并在调试控制台中显示输出信息。

可以使用调试工具来观察程序的运行过程、变量的值以及内存的变化。

8. 运行程序。

如果不需要进行调试,可以直接运行编译生成的可执行文件。

在VS2024的主界面上方的工具栏内,选择“本地Windows调试器”和“运行”按钮来运行程序。

9.查看编译警告和错误。

VS2024在编译过程中会显示警告和错误信息。

警告是一些可以忽略的问题,而错误表示编译失败。

可以查看警告和错误列表来定位和解决代码中的问题。

10.优化和发布程序。

在项目属性窗口的“常规”选项卡上,可以进行代码优化和发布设置。

用VC6.0编译Windows驱动程序

用VC6.0编译Windows驱动程序
/Od:关闭调试模式。驱动程序不需要像Win32程序那样用VC调试器调试,而需要用到内核调试器调试
/D WIN32=100 此宏,这些是必需的
/Fo"MyDriver_Check":设置中间生成目标代码的路径(根据具体环境会有所变化)
/IGNORE:4078:忽略4078号警告错误
/nodefaultlib:不使用默认的库
/out:"MyDriver_Check/HelloDDK.sys":输出二进制代码的名称(根据具体环境会有所变化)
/pdbtype:sept:设置pdb文件类型
/subsystem:native:子系统是内核系统
/driver:编译驱动
/SECTION:INIT,D:将INIT的段设置为可抛弃的
1.修改编译选项
“工程”菜单“设置”选项中“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
ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x100 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"MyDriver_Check/HelloDDK.pdb" /debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/HelloDDK.sys" /pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078

VC编写驱动方法

VC编写驱动方法

VC编写驱动的方法为了简化驱动的开发工作,本开发包对驱动接口和驱动进行了封装,使开发者专注于驱动本身功能的实现,抛开接口的定义,大大提高了驱动开发的效率和可靠性。

开发包的文件在ecdrv目录下。

结合本开发包提供的modbus驱动例子讲解。

驱动开发步骤:1、用VC6创建MFC正规DLL,将开发包cpp文件加入工程,填写输出def文件def输出文件函数导出定义直接从modbus例子复制过来:; modbus.def : Declares the module parameters for the DLL.LIBRARY "modbus"DESCRIPTION 'modbus Windows Dynamic Link Library'EXPORTS; Explicit exports can go hereECD_GetDriverInfoECD_CreateDriverECD_GetConfigBlkSizeECD_GetConfigBlkECD_EnumVarDefECD_EnumBlkVarDefECD_GetV arDefECD_KillDriverECD_StartECD_StopECD_GetStatusECD_GetErrInfoECD_ConfigECD_WriteVarECD_WriteBlkVarECD_AsynReadBlkVarECD_SetCallBack_T只拷贝上面绿色部分2、从CEcdDrv派生建立一个具体的驱动类,实现从CEcdDrv重载的虚函数,并实现具体的功能。

// modbusdrv.h#pragma once#include "../ecdrv/ecdclass.h"class CModDrv : public CEcdDrv //Modbus 驱动类,必须从CEcdDrv继承而来{//….};3、实现类工厂,类工厂只有两个静态函数,很简单,一个是new一个具体的对象,另一个是填写驱动信息。

VC编译链接选项的设置

VC编译链接选项的设置

VC编译链接选项的设置大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。

原因是多方面的。

大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。

因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。

我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。

但是,所谓:“公欲善其事,必先利其器”。

如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢?闲话少说。

我们先来看一下VC的处理流程,大致分为两步:编译和连接。

源文件通过编译生成了.obj文件;所有.obj文件和.lib文件通过连接生成.exe 文件或.dll文件。

下面,我们分别讨论这两个步骤的一些细节。

1、编译参数的设置。

主要通过VC的菜单项Project-> Settings-> C/C++页来完成。

我们可以看到这一页的最下面Project Options中的内容,一般如下:/nologo /MDd /W3 /Gm /GX /ZI /Od /D " WIN32" /D " _DEBUG" /D " _WINDOWS" /D " _AFXDLL" /D " _MBCS" /Fp" Debug/WritingDlgTest.pch" /Yu" stdafx.h" /Fo" Debug/" /Fd" Debug/" /FD /GZ /c各个参数代表的意义,可以参考Msdn。

比如/nologo表示编译时不在输出窗口显示这些设置(我们可以把这个参数去掉来看看效果)等等。

一般我们不会直接修改这些设置,而是通过这一页最上面的Category中的各项来完成。

1) General:一些总体设置。

Warning level用来控制警告信息,其中Level 1是最严重的级别;Warnings as errors将警告信息当作错误处理;Optimizations是代码优化,可以在Category的Optimizations项中进行更细的设置;Generate browse info用以生成.sbr文件,记录类、变量等符号信息,可以在Category的Listing Files项中进行更多的设置。

利用Notepad++配置Windows-7操作系统的C-C++编译环境

利用Notepad++配置Windows-7操作系统的C-C++编译环境

利用Notepad++配置Windows-7操作系统的C/C++编译环境1 准备工作1.1下载Notepad++,目前最新版本为7.2.21.2下载C编译器:Dev-c++下载地址:.tw/~jovice/c++/boards/devcpp.htmMinGW下载地址:http://gd.tuwien.ac.at/gnu/mingw/MinGW-3.0.0-1.exeMinGW下载地址:https:///projects/mingw/files/Cygwin下载地址:https:///mirrors.html上述编译器都可以,不同之处在于“环境变量”的“路径设置”会有所差别。

2 设置环境变量安装好C编译器以后,需要将编译器安装路径\bin添加至系统环境变量PATH部分。

具体为:鼠标右键右击“我的电脑”,选择:属性à高级系统设置à环境变量à系统变量,找到变量“Path”,在其值后面加入C编译器安装路径\bin。

注意:在Path的值中,每个路径间需要使用分号;隔开。

若安装了Dev-c++编译器,则加入“;C:\Dev-Cpp\bin”。

注意:去掉双引号,但要保留前面的分号。

如果单独安装MinGW,需要添加以下三个路径到path:C:/Program Files/MinGW/bin;C:/Program Files/MinGW/include;C:/Program Files/MinGW/lib 之后测试编译器是否配置成功,命令行输入:gcc -v 或g++ -v 或编译小程序gcc -o hello.exe hello.c如果没有报错,说明配置成功。

测试电脑预装系统为Windows 7 sp1(32位),已安装有R语言,并附带安装了MinGW (Rtools文件夹下)。

相应C编译器路径“c:\Rtools\bin;c:\Rtools\mingw_32\bin”在安装R期间已经自动设置好,所以,本文省去“环境变量”之“路径设置”步骤。

VS2008环境编译驱动

VS2008环境编译驱动

VS2008环境编译驱动新建⼀个空的 win32控制台程序1、选(⽂件→新建→项⽬→Visual C++项⽬→win32→win32控制台项⽬)创建⼀个⼆选项⽬菜单→添加现有项→添加所有驱动相关的*.h,*.c,*.cpp,*.rc之类的⽂件。

选⼯具(T)→选项(O)....→项⽬→VC++⽬录→1、在可执⾏⽂件⽬录中添加:D:\WINDDK\3790.1830\BIN\X862、在包含⽂件⽬录添加如下路径D:\WINDDK\3790.1830\inc\wxpD:\WINDDK\3790.1830\inc\crt (可选)D:\WINDDK\3790.1830\inc\ddk\wxpD:\WINDDK\3790.1830\inc\ddk\wdm\wxp3、在库⽂件⽬录中添加:D:\WINDDK\3790.1830\LIB\WXP\I386项⽬event属性设置新建项⽬配置check //必选(⼀)C/C++属性设置常规选项卡1调试信息格式(C7兼容(/Z7) //可选2警告等级(2级(/W2) //可选3将警告视为错误(是(/wx) //可选优化选项卡1优化(禁⽤/Od) //可选预处理器预处理器定义:WIN32=100;_X86_=1;WINVER=0x501;DBG=1 //必选代码⽣成启⽤最⼩重新⽣成:否 //可选基本运⾏时检查:默认值//可选运⾏时库:多线程调试(/MTd)或多线程(/MT) //建议选缓冲区安全检查:否 //可选(可避免出现LINK : error LNK2001:⽆法解析外部符号__security_cookie)⾼级调⽤约定__stdcall(/Gz) //必选链接器常规:输出⽂件:$(OutDir)\$(ProjectName).sys //必选启⽤增量链接:否(/INCREMENTAL:NO) //建议选上忽略导⼊库:是//可选(设置为此值时,必须在附加库⽬录中加:D:\WINDDK\3790.1830\lib\wxp\i386,这样项⽬就不会依赖IDE环境的设置) 否(设置为此值时,将依赖IDE的环境的相关设置)输⼊:附加依赖项ntoskrnl.lib Hal.lib wdm.lib wdmsec.lib wmilib.lib ndis.lib MSVCRT.LIB LIBCMT.LIB //必选其12//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>G:\event2008\check\event2008.exe : fatal error LNK1295: “/DYNAMICBASE”与“/DRIVER”规范不兼容;链接时不使⽤“/DYNAMICBASE”数据执⾏保护(DEP):默认值//必选不然会出现G:\event2008\check\event2008.sys : fatal error LNK1295: “/NXCOMPAT:NO”与“/DRIVER”规范不兼容;链接时不使⽤“/NXCOMPAT:NO”设置效应和:是(/RELEASE) //可选基址:0x10000 //建议选上命令⾏”->附加选项:添加开关:/SECTION:INIT,D /IGNORE:4078 //建议填上可以避免以下错误提⽰LINK : warning LNK4078:找到多个“INIT”节,它们具有不同的属性(E2000020)LINK : error LNK2001:⽆法解析的外部符号__load_config_used五.编译,链接。

VC编写驱动方法

VC编写驱动方法

VC编写驱动方法编写驱动方法是嵌入式系统开发中的重要环节,本文将介绍编写驱动方法的一般流程和常用技巧。

驱动程序是一种特殊的软件,其功能是控制硬件设备,使之按照预期工作。

在嵌入式系统中,驱动程序通常编写在硬件抽象层(HAL)之上,为操作系统或应用程序提供访问与控制硬件设备的接口。

编写驱动程序一般可以按照以下步骤进行:1.了解硬件设备:在编写驱动程序之前,首先需要对所要驱动的硬件设备有一个基本的了解。

包括硬件设备的型号、接口方式、寄存器设置等。

这些信息对于驱动程序的编写非常重要。

2.选择合适的编程语言:驱动程序可以使用多种编程语言来编写,包括C、C++、汇编等。

一般而言,C语言是编写驱动程序的首选,因为它具有良好的可移植性和较高的执行效率。

3.初始化驱动程序:驱动程序的初始化是一个非常关键的步骤,它需要完成一些必要的设置和初始化操作,以确保驱动程序能够正常工作。

一般而言,初始化包括设备的注册、中断处理程序的注册等。

4.编写设备控制接口:驱动程序的核心功能是控制硬件设备,实现对设备的读写、配置等操作。

因此,需要编写一系列的设备控制接口函数,包括打开设备、关闭设备、读取数据、写入数据等。

5.处理中断和异常:在嵌入式系统中,硬件设备常常会产生中断和异常,驱动程序需要捕获并正确处理这些中断和异常。

一般而言,可以使用中断处理程序来处理硬件设备产生的中断,将中断源的状态读取并进行相关操作。

6.进行测试和调试:编写驱动程序之后,需要进行测试和调试。

可以通过一些软件工具和硬件设备来验证驱动程序的正确性和稳定性。

测试的内容包括设备读写、配置修改等常见操作。

编写驱动程序时1.模块化设计:将驱动程序划分为多个模块,每个模块负责一个具体的功能。

模块化设计有助于提高代码的可读性和可维护性,同时也方便进行单元测试和调试。

2.数据结构和算法选择:根据不同的硬件设备和应用场景,选择合适的数据结构和算法来实现驱动程序。

例如,对于需要高效处理数据的设备,可以使用缓冲区来进行数据的存储和处理。

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

用VC IDE环境编译驱动程序目前Windows驱动程序分为两类,一类是不支持即插即用功能的NT式驱动程序,另一类是支持即插即用功能的WDM驱动程序。

它们在用VC IDE编译驱动程序时有些不一样,下面分开说明:
一、NT驱动( 红色字体标注的地方是容易忽略的):
(1)用VC建立一个新工程。

在VC IDE环境下选择“File”“New”,弹出“New”对话框。

在该对话框中,选择“Project”选项卡。

在“Project”选项卡中,选择Win32 Application,在这个基础上进行修改。

工程名为“XXXXXX”,。

单击“OK”,进入下一个对框框,在该对话框中,选择一个空的工程。

(2)将驱动程序的两个源文件XXX.h和XXX.cpp拷贝到工程目录中,并添加到工程中(Project->Add To Project->File)。

(3)增加新的编译版本,去掉Debug和Release版本(Build->Configuration中添加一个Check)。

(4)修改工程属性。

选择“Project”|“Setting”,在对话框中,选择“General”选项卡。

将Intermediate files和Output files改为XXX_Check。

(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
(6)选择Link选项卡,将原有的Project Options内容全部删除,替换成如下内容,ntoskrnl.lib /nologo /base:”0x10000”/stack:0x400000,0x1000 /entry:”DriverEntry”
/subsystem:console /incremental:no /pdb:”MyDriver_Check/XXX.pdb”/debug /machine:I386 /nodefaultlib /out:”MyDriver_Check/XXX.sys”/pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
(7)修改VC的lib目录和include目录。

在VC中选择“Tools”|“Options”,在弹出的对话框中选择“Directories”选项卡。

在“Show directories for”下拉菜单选择“Include files”菜单。

添加“D:\WINDDK\2600\INC\W2K”和“D:\WINDDK\2600\INC\DDK\W2K”,并将这两个目录置于最上。

大家可以将这个目录“D:\WINDDK\2600”改成你们自己安装的目录。

这里应该选择W2K子目录,DDK中还会有相应的XP子目录。

但因为XP驱动编译时候需要高版本的VC编译
器,所以这里用的都是W2K子目录,包括后面讲到的WDM驱动程序也是这样子的。

它编译的代码完全可以应用于Windows2000和Windows XP操作系统。

(8)在“Show directories for”下拉菜单中选择“Library files”菜单,添加目录“D:\WINDDK\2600\LIB\W2K\I386”,并置于最上端。

(9)编译。

按F7键。

同样会在文件下得到XXX.sys文件。

二、WDM驱动(前五点都和NT一样,6,7稍有不同,见蓝色字体):
(6)选择Link选项卡,将原有的Project Options内容全部删除,替换成如下内容,wdm.lib/nologo /base:”0x10000”/stack:0x400000,0x1000 /entry:”DriverEntry”
/subsystem:console /incremental:no /pdb:”MyDriver_Check/XXX.pdb”/debug /machine:I386 /nodefaultlib /out:”MyDriver_Check/XXX.sys”/pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
(7)修改VC的lib目录和include目录。

在VC中选择“Tools”|“Options”,在弹出的对话框中选择“Directories”选项卡。

在“Show directories for”下拉菜单选择“Include files”菜单。

添加“D:\WINDDK\2600\INC\W2K”和“D:\WINDDK\2600\INC\DDK\WDM\W2K”,并将这两个目录置于最上。

大家可以将这个目录“D:\WINDDK\2600”改成你们自己安装的目录。

这里应该选择W2K子目录,DDK中还会有相应的XP子目录。

但因为XP驱动编译时候需要高版本的VC 编译器,所以这里用的都是W2K子目录,包括后面讲到的WDM驱动程序也是这样子的。

它编译的代码完全可以应用于Windows2000和Windows XP操作系统。

(8)在“Show directories for”下拉菜单中选择“Library files”菜单,添加目录“D:\WINDDK\2600\LIB\W2K\I386”,并置于最上端。

(9)编译。

按F7键。

同样会在文件下得到XXX.sys文件。

以上这些都是摘自张帆的《Windows驱动开发技术详解》一书,只是为了大家查找方便,花了点时间练打字。

我已经校稿了好几次,若还有问题,帮我修正,像第5第6条就可以直接粘贴复制拿来用,但若有问题,以张帆那本书上为准。

(七叶疯君)。

相关文档
最新文档