ddk+xp配置驱动环境 ---一个简单的驱动程序

1.2.1 VC6驱动开发环境配置
A、VC6驱动编译配置
B、VC6集成环境下编译驱动

一、新建 win32 console Application 生成一个 空项目文件
选Project菜单 Add to Project-----Files…选择所有驱动相关文件添加到工程
二、Tools -----Options------Directories

在这里插入图片描述
在Include目录中添加:
C:\WINDDK\3790.1830\inc\wxp
C:\WINDDK\3790.1830\inc\crt
C:\WINDDK\3790.1830\inc\ddk\wxp
C:\WINDDK\3790.1830\inc\ddk\wdm\wxp
注意位置不能错,一定要在最上面
在这里插入图片描述

在Executable files目录中添加:
C:\WINDDK\3790.1830\BIN\X86
在这里插入图片描述

在Library files目录中添加:

C:\WINDDK\3790.1830\LIB\WXP\I386

Project-> Settings

C/C++ Project Option最终设置如下:

/nologo /Gz /MLd /W2 /WX /Z7 /Od /D WIN32=100 /D _X86_=1 /D WINVER=0x501 /D DBG=1 /Fo"ddk_check/" /Fd"ddk_check/" /FD /c 

Link Project Options最终设置如下:

Wdm.lib ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"ddk_check/event.pdb" /debug /machine:I386 /nodefaultlib /out:"ddk_check/event.sys" /subsystem:native /driver  /RELEASE /IGNORE:4078 

1.3.1编写一个名为DDK_HelloWorld简单的驱动

  A、VC6集成环境下书写代码
      驱动入口函数DriverEntry
      入口函数参数DriverObject和RegistryPath
  B、书写SOURCES文件
  C、书写makefile文件
  D、用DDK-Build环境编译

一、新建一个空的TXT文件,取名为miniddk.c
二、mini_ddk.c书写
NT式驱动的相头申明ntddk.h
DriverEntry //入口函数 相当于 win32编程中的 main DriverEntry 有2个参数 如下:
PDRIVER_OBJECT //此结构用来传递驱动对象,由I/O管理器传递进来的驱动对象
PUNICODE_STRING //此结构用来指向此驱动负责的注册表,也就是驱动程序在注册表中的路径

二、书写makefile文件

此文件 一般情况下只有一行 并且不需要修改 不能有前导空格

  !INCLUDE $(NTMAKEENV)\makefile.def

三、书写Sources文件

#下边这行指定生成驱动名字DDK_HelloWorld.sys
TARGETNAME=DDK_HelloWorld
#下边这行指定生成文件的类型DRIVER指驱动
TARGETTYPE=DRIVER
#下边这行指定生成驱动所在的路径\SYS\DDK_HelloWorld.sys
TARGETPATH=SYS
#下边这行指定相关头文件所在目录路径
INCLUDES=$(BASEDIR)\inc;\
      $(BASEDIR)\inc\wxp;\ 

##上边必空一行D:\WINDDK\3790.1830 等价$(BASEDIR)
#下边这行指定驱动源代码*.cpp或者*.c
SOURCES=mini_ddk.c\ 

四、用DDK环境build编译出驱动

#include <ntddk.h>
// 驱动程序入口函数 格式申明
int DriverEntry(PDRIVER_OBJECT a, PUNICODE_STRING b); //NTSTATUS _stdcall
//------------代码实现部分---------
//#pragma code_seg(“INIT”)
int DriverEntry( //入口函数 main
PDRIVER_OBJECT DriverObject,
PUNICODE_STRING RegistryPath
)
{
//KdPrint((“我们的第一个驱动\n”));
//KdPrint是一个宏 在Checked版中 会用DbgPrint代替,在Free版中则不执行任何操作 要用双括号
//DbgPrint(“知其所以然技术论坛\n”);
//驱动载入时显示的信息 Checked和Free版都会显示
return(0);
}

使用DDK编译驱动

路径不能有空格,不能有中文,否则会报错
cd+路径 跳转到待编译文件的完整路径
build 编译文件
build -c 已有编译文件,删除文件再次编译。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值