设置编译内核lib驱动及应用层dll的source文件

转载 2012年10月08日 15:34:55

驱动层的一些策略性代码,算法性代码,和驱动内API不相关的代码,可以用在应用层进行测试,以提高编写的速度,这是明显的,应用层在这方面的有其优点.那么如何来实现这个功能.

主要是在写两个文件

一个是sources文件,  一个是Sample.def文件.

一. sources文件

KERNEL_BUILD=1                    #若想编译成DLL的话 那么在之前加#号

TARGETNAME=Sample
DLLDEF=Sample.def                 #输出函数的.def文件
TARGETPATH=../../bin                 #文件输出目录 (.sys文件或.dll文件)
TARGETPATHLIB=../../lib            #.lib输出目录

!ifdef KERNEL_BUILD               #若定义了KERNEL_BUILD 则生成一个.sys文件 相当于内核库  
TARGETTYPE=EXPORT_DRIVER
!else                                              #若没有定义,则生成一个.dll  
TARGETTYPE=DYNLINK          #生成一个dll
USE_MSVCRT=1
DLLENTRY=_DllMainCRTStartup        #dll的入口函数
INCLUDES= $(INCLUDES); $(DDK_INC_PATH);      #H文件的目录
INCLUDES= $(INCLUDES); $(SDK_INC_PATH);
TARGETLIBS=$(TARGETLIBS) $(SDK_LIB_PATH)\kernel32.lib     #LIB目录  kernel32.lib  gdi32.lib advapi32.lib
TARGETLIBS=$(TARGETLIBS) $(SDK_LIB_PATH)\gdi32.lib
TARGETLIBS=$(TARGETLIBS) $(SDK_LIB_PATH)\advapi32.lib
TARGETLIBS=$(TARGETLIBS) $(SDK_LIB_PATH)\ntdll.lib
!endif


INCLUDES=$(INCLUDES); ../../inc;                       #自己的.H文件目录
INCLUDES=$(INCLUDES); ../../inc/SampleOne; #自己的.H文件目录二
INCLUDES=$(INCLUDES); ../../inc/SampleTwo;#自己的.H文件目录三


SOURCES=\
A.cpp\
B.cpp\
C.cpp\
D.cpp\

二. Sample.def文件

NAME "Sample.sys"        #若为内核库则为Sample.sys   若为应用层dll则修改为Sample.dll
EXPORTS
 DllInitialize PRIVATE
 DllUnload PRIVATE

AFunc

BBFunc

 

 

三.函数库入口函数

#include "ntddk.h"

extern "C"{
 NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject,PUNICODE_STRING pusRegPath);
 void DriverUnload(PDRIVER_OBJECT pDriverObject);
 NTSTATUS DllInitialize(PUNICODE_STRING RegistryPath);
 NTSTATUS DllUnload();
};

void DriverUnload(PDRIVER_OBJECT pDriverObject)
{
 DllUnload();
}

NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject,PUNICODE_STRING pusRegPath)
{
 DllInitialize(pusRegPath);
 pDriverObject->DriverUnload = DriverUnload;
 return STATUS_SUCCESS;
}


NTSTATUS DllInitialize(PUNICODE_STRING RegistryPath)
{
 DbgPrint("Sample: DllInitialize(%wZ)\n", RegistryPath);
 return STATUS_SUCCESS;
}

NTSTATUS DllUnload()
{
 DbgPrint("Sample: DllUnload\n");
 return STATUS_SUCCESS;
}

 

//这里要注意的是 

//DDK 中编译器默认为 _stdcall

//而VC中编译默认为 _cdecel 

//因此在这里显式加入 _stdcall 防止编译器link错误

ULONG _stdcall TestFun(void)             

{

    return 100;

}

 

示例代码下载地址:

http://download.csdn.net/source/2799981

32位USB设备驱动工程移植64位编译(用到vdw_wdm.lib)

工程用到vdw_wdm.lib,首先需要编译64
  • ljy_0906
  • ljy_0906
  • 2014年05月20日 16:59
  • 1481

VC++中.DLL文件与.LIB文件关系

一般的LIB文件是“导入库”,用来提供给link.exe,作为链接DLL——也就是“动态链接库”的依据。里面记录了类似下面的信息:调用函数xxx(),连接到x.dll的0xABCDEFGH地址;…… ...
  • u011392772
  • u011392772
  • 2015年01月26日 09:59
  • 1660

驱动与应用层简单消息通信总结

驱动与应用层简单消息通信总结 参考: 驱动与应用层简单消息通信  http://www.cnblogs.com/einyboy/archive/2012/06/13/2548030.html ...
  • duhaomin
  • duhaomin
  • 2013年10月29日 18:01
  • 1912

VS2013 中生成lib和dll库文件

转载出处:http://blog.csdn.net/renyhui/article/details/21282073 ①新建项目-->win32-->win32项目-->输入项目名为...
  • HHXUN
  • HHXUN
  • 2016年08月17日 18:06
  • 1232

如何在编译器(vs2013)里设置调用别人写好的lib和dll步骤

如何在编译器(vs2013)里设置调用别人写好的lib和dll步骤: 1.Tools->options->projects and solutions->VC++ directories分别在包含文...
  • wangjun_huster
  • wangjun_huster
  • 2017年03月23日 14:34
  • 996

c++中.dll与.lib文件的生成与使用的详解

原文地址:http://www.jb51.net/article/36447.htm c++中.dll与.lib文件的生成与使用的详解 ---------------------------...
  • zr459927180
  • zr459927180
  • 2016年04月06日 20:16
  • 1830

OBJ、LIB、DLL与EXE之间的关系

OBJ是中间代码文件、LIB是静态库文件、DLL是动态库文件、EXE是可执行文件。 对于静态库文件,链接的时候把其中需要的东西抽取出来嵌入到EXE中,EXE较大。 对于动态库文件,EXE执行的时候...
  • u010655348
  • u010655348
  • 2016年03月07日 23:21
  • 898

编译linux外部驱动模块时的基础知识

linux内核模块编译引言 为了清晰的编译Linux内核,内核编译系统使用Kbuild规则对编译的过程以及依赖进行规约。在内核模块的编译中,为了保持与内核源码的兼容以及传递编译链接选项给GCC,...
  • Decisiveness
  • Decisiveness
  • 2016年01月17日 00:00
  • 795

【Visual Studio】使用 pexports 根据 VS 的 .dll 动态链接库生成 .lib 库文件

一、问题描述: 最近博主需要使用 8 路 USB 视频采集卡做二次开发,最后选择一款叫做“中维世纪”的 8 路 USB 视频采集卡 C301。但是,官网上仅提供了 1.0.0.4 版本的 SDK,使用...
  • u011408697
  • u011408697
  • 2015年03月02日 09:18
  • 1457

关于Dll和lib的区别及作用

在学校的时候只是纯粹学习编程知识,并
  • jhgameboy
  • jhgameboy
  • 2014年04月14日 22:46
  • 6338
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设置编译内核lib驱动及应用层dll的source文件
举报原因:
原因补充:

(最多只允许输入30个字)