`
tcspecial
  • 浏览: 911649 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

VS2012 开发驱动

阅读更多

VS12下开发wdk驱动,比较繁琐,要设置很多选项。本文在 win8 + visual studio2012 + wdk7600 下测试通过。 

 

一. 项目属性配置

常规  

  目标文件扩展名:.sys          // 必选

 

VC++目录

  包含目录    C:\WinDDK\7600.16385.1\inc\wdf\kmdf\1.9  inc\ddk inc\crt inc\api

  库目录      C:\WinDDK\7600.16385.1\lib\win7\i386     C:\WinDDK\7600.16385.1\lib\wdf\kmdf\i386\1.9

 

C/C++  

  优化

    优化(禁用/Od)                             // 可选 

    

  预处理器        

    WIN32=100;_X86_=1;DBG=1     // 必选 

  

  代码生成 

      运行时库:多线程调试(/MTd)  或  多线程(/MT)                   // 建议选 

      缓冲区安全检查:否                                            //可选 (可避免出现 error LNK2001:  无法解析外部符号  __security_cookie) 

  

  高级 

      调用约定  __stdcall(/Gz)                                       //必选 

  

链接器 

  常规 

     启用增量链接:否(/INCREMENTAL:NO)                           //建议

  

  输入 

      ntoskrnl.lib        // NT式驱动

      Hal.lib             // HalXXX 函数

      wdm.lib             // WDM式驱动

      wdmsec.lib  

      wmilib.lib          // WmiXXX 函数

      ndis.lib            // NdisXXX函数

 

      忽略所有默认库:    是 (/NODEFAULTLIB)                 //必选  

 

  清单文件:

      生成清单文件              否  // 必选,注vs12下必选该选项才能编译成功

      启用用户账户控制(UAC)   否  // 必选 

      不然会出现  fatal error LNK1295: “/MANIFESTUAC”与“/DRIVER”规范不兼容;链接时不使用“/MANIFESTUAC”   

  

  

  系统 

     子系统:  控制台(/SUBSYSTEM:NAIVE)                                //必选 

     堆栈保留大小:4194304                                             //可选 

     堆栈提交大小:  4096                                               //可选 

     驱动程序:    驱动程序(/DRIVER)                                     //必选   

 

  高级

    入口点:         DriverEntry                                         //必选 

    目标计算机:     MachineX86 (/MACHINE:X86)                           //可选

    随机基址:清空                                                         // 必选,否则会出现 fatal error LNK1295: “/DYNAMICBASE”与“/DRIVER”规范不兼容;链接时不使用“/DYNAMICBASE”

 

 

    数据执行保护(DEP):  清空                                             //必选,否则会出现 fatal error LNK1295:“/NXCOMPAT:NO”与“/DRIVER”规范不兼容;链接时不使用“/NXCOMPAT:NO”   

 

二. 编码

#include <ntddk.h> 

VOID HelloDDKUnload(IN PDRIVER_OBJECT pDriverObject) 
{ 
	KdPrint(("Enter DriverUnload\n")); 
	KdPrint(("Leave DriverUnload\n")); 
} 

NTSTATUS DriverEntry ( IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath	) 
{ 
	NTSTATUS status; 
	status = STATUS_SUCCESS; 
	
	KdPrint(("Enter DriverEntry\n")); 
	pDriverObject->DriverUnload = HelloDDKUnload; 
	KdPrint(("DriverEntry end\n")); 
	
	return status; 
}

 

 三. 命令行编译

VS编译环境设置比较繁琐,可以直接编写makefile通过命令行编译。

在当前目录下准备 makefile 和 sources 两个文件。

#可直接从wdk安装目录拷贝,不要修改
!INCLUDE $(NTMAKEENV)\makefile.def

!if $(FREEBUILD)
MSC_WARNING_LEVEL=/W1
!else
MSC_WARNING_LEVEL=/W3
!endif

 

TARGETNAME = hello
TARGETTYPE = DRIVER
TARGETPATH = x32
INCLUDES = .\

TARGETLIBS = $(DDK_LIB_PATH)\tdi.lib

SOURCES = 	hello.c

 

从开始菜单调出编译命令行,%StartMenu%\Windows Driver Kits\WDK 7600.16385.1\Build Environments\Windows 7

 

WDK提供了intel,AMD等芯片的支持,可编译32位或64位驱动。checked为debug版本编译环境,free为release版本编译环境。

启动32位编译环境,运行 build -Cz  或 bld 命令,即可在x32 目录下生成 hello.sys。

 

 

  • 大小: 5.8 KB
分享到:
评论

相关推荐

    Developing Drivers With VS2012

    本次关于“使用VS2012开发驱动程序”的分享由T. Roy带来。T. Roy拥有计算机工程硕士学位,并具备超过20年的系统软件开发经验。作为CodeMachine公司的创始人之一,他还是该领域的资深讲师、作者及咨询顾问。Code...

    CP2012串口驱动

    串口驱动是计算机与外部设备通信的重要组成部分,特别是在嵌入式系统开发和调试过程中,它起着桥梁的作用。本文将详细讲解"CP2012串口驱动"及其在使用中的关键知识点。 CP2012是Silicon Labs(芯科实验室)生产的一...

    SQL Server 2012驱动包

    SQL Server 2012驱动可无缝集成到Eclipse、IntelliJ IDEA等开发环境中,方便开发和调试。 总之,SQL Server 2012驱动包是Java开发者与SQL Server数据库交互的重要桥梁,它提供了高效、安全的数据访问机制,并且...

    wdk vs2012 驱动编程

    wdk vs2012 驱动编程 win7下用vs2012驱动开发搭建

    CP2012驱动USB模块

    CP2012驱动USB模块是为连接和控制基于Silicon Labs...总之,CP2012驱动USB模块是与使用该芯片的USB设备通信的关键,理解和掌握其工作原理、安装方法以及常见问题的解决策略,对于开发和维护涉及CP2012的项目至关重要。

    vs2008/vs2012驱动配置工程

    在IT行业中,开发硬件驱动程序是一项关键任务,它使得操作系统能够与硬件设备进行通信。本教程将重点关注在Visual Studio 2008和2012环境下配置驱动程序工程的过程。这两个版本的Visual Studio虽然在界面和一些功能...

    win7 vs2012+wdk8.0 pci驱动源码 Solution.zip

    win7 vs2012+wdk8.0 搭建wdf驱动开发环境,系统:win7 x64 工具:vs2012 + WDK8.0 插件:wdfcoinstaller.msi win7 vs2012+wdk8.0 pci驱动源码

    sqlserver驱动2012版

    标题中的“sqlserver驱动2012版”指的是SQL Server Native Client 2012,这是微软为SQL Server设计的一款数据库访问接口。SQL Server Native Client(简称SQLNCLI)是用于与SQL Server交互的一种客户端库,它包含了...

    sqlserver 2012驱动

    Java 开发工具包:5.0 和 6.0 受支持的 SQL Server 版本: Microsoft® SQL Server® 2012 Microsoft® SQL Server® 2008 R2 Microsoft® SQL Server® 2008 Microsoft® SQL Server® 2005 Microsoft® SQL ...

    Linux系统CSI设备驱动开发-2012.1.30

    Linux系统中的CSI(Camera Serial Interface)设备驱动开发是嵌入式领域中一项关键的技术,尤其在智能手机、平板电脑以及各种物联网设备中,用于处理摄像头数据流。2012年是一个重要的时间点,那时Linux内核对CSI的...

    使用VS2012开发工具开发类似当当网电子商务网站

    在本项目中,“使用VS2012开发工具开发类似当当网电子商务网站”,开发者采用了一种基于微软的Visual Studio 2012 IDE的综合开发环境,利用其强大的功能来构建一个类似于当当网的在线图书销售平台。这个项目的核心...

    Vs2012中水晶报表的应用

    Visual Studio 2012(Vs2012)不再内置水晶报表的开发组件,因此要在该版本中使用水晶报表,需要额外安装由SAP提供的组件。本篇文章主要介绍了如何在Vs2012中集成并使用水晶报表,包括组件下载、安装、报表数据源的...

    vs2012 链接mysql的解决方案

    1. **驱动兼容性**:VS2012默认支持的是.NET Framework 4.0,而MySQL Connector/NET 6.8.3是与.NET Framework 4.5及更高版本兼容的。因此,确保你的系统已经安装了.NET Framework 4.5或以上版本,否则需要升级或安装...

    VS2012 C++_CLR 中Windows Forms模板补丁

    在Visual Studio 2012 (VS2012) 中,C++/CLI(也称为C++ CLR)是微软为.NET Framework提供的一种语言扩展,它允许开发人员使用C++语法来编写托管代码,与.NET环境无缝交互。然而,原生的VS2012安装并不包含直接创建...

    驱动精灵2012扩展版(集成万能网卡驱动)v6.1.918.2095中文官方安装版

    经过漫长的开发和内部测试,驱动精灵2012 Beta1终于可以与大家见面了!新版驱动精灵2012,我们拥有诸多改进,下面我将一一为大家介绍。 全新界面,2012引擎 驱动精灵2012版本对界面进行了重新设计,界面更简洁,...

    inux设备驱动开发详解:基于最新的Linux4.0内核配套光盘

    《Linux设备驱动开发详解:基于最新的Linux4.0内核配套光盘》一书由宋保华编写,针对Linux4.0内核进行了深入浅出的解析与实践指导。本书结合了理论与实践,旨在帮助读者掌握Linux设备驱动程序的设计与开发技能。 ##...

    LoadSys.rar_VS2012

    虽然VS2012主要是为应用程序开发设计的,但它也包含了对Windows Driver Foundation (WDF)的工具和模板,使得开发者可以在其集成开发环境中创建、调试和测试驱动程序。WDF是一种微软推荐的驱动程序模型,它简化了驱动...

    sqlserver2012驱动类文件

    标题中的“sqlserver2012驱动类文件”指的是用于连接和操作Microsoft SQL Server 2012数据库的Java Database Connectivity (JDBC) 驱动程序。在Java编程环境中,JDBC驱动是必不可少的,它允许Java应用程序通过Java ...

Global site tag (gtag.js) - Google Analytics