我在使用wdk编程时,要对文件进行操作,但发现wdk不支持c语言字符串函数的fopen等函数,于是就想进行交叉编译。

当使用WDK(我这里版本WDK .1)命令行编译一个驱动程序时,进入到当前驱动所在的文件夹目录下,一般都有一个Sources文件,内容一般是:
TARGETNAME=UsbKbd
TARGETTYPE=DRIVER
DRIVERTYPE=WDM
TARGETPATH=OBJ
#TARGETLIBS=C:\98DDK\LIB\I386\FREE\Usbd.Lib
TARGETLIBS=$(DDK_LIB_PATH)\Usbd.Lib
INCLUDES=$(BASEDIR)\
SOURCES= Init.cpp \
Dispatch.cpp \
DeviceIo.cpp \
DebugPrint.c \
NTTARGETFILES=PostBuildSteps
例如上面的Sources例子里(是编译UsbKbd驱动),“#”是注释符,“DDK_LIB_PATH”等环境变量定义在什么地方呢?
开启一个WDK命令行编译环境,执行下面操作:
&span style=&font-size:18&&C:\WinDDK\.1&set &c:\1.txt&/span&上面操作的意思是,将当前命令行cmd下所有的环境变量输出到c:\1.txt内,打开该文件,如下:
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\Administrator\AppData\Roaming
asl.log=Destination=file
ATL_INC_PATH=C:\WinDDK\.1\inc
ATL_INC_ROOT=C:\WinDDK\.1\inc
ATL_LIB_PATH=C:\WinDDK\.1\lib\atl\*
BASEDIR=C:\WinDDK\.1
BUILD_ALLOW_COMPILER_WARNINGS=1
BUILD_ALT_DIR=chk_wxp_x86
BUILD_DEFAULT=-ei -nmake -i -nosqm
BUILD_DEFAULT_TARGETS=-386
BUILD_MAKE_PROGRAM=nmake.exe
BUILD_MULTIPROCESSOR=1
BUILD_OACR=1
COFFBASE_TXT_FILE=C:\WinDDK\.1\bin\coffbase.txt
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=XT1-YGA
ComSpec=C:\Windows\system32\cmd.exe
CRT_INC_PATH=C:\WinDDK\.1\inc\crt
CRT_LIB_PATH=C:\WinDDK\.1\lib\crt\*
DDKBUILDENV=chk
DDK_INC_PATH=C:\WinDDK\.1\inc\ddk
DDK_LIB_DEST=C:\WinDDK\.1\lib\wxp
DDK_LIB_PATH=C:\WinDDK\.1\lib\wxp\*
DDK_TARGET_OS=WinXP
DEPRECATE_DDK_FUNCTIONS=1
DEVMGR_SHOW_DETAILS=1
DRIVER_INC_PATH=C:\WinDDK\.1\inc\ddk
FP_NO_HOST_CHECK=NO
HALKIT_INC_PATH=C:\WinDDK\.1\inc\ddk
HALKIT_LIB_PATH=C:\WinDDK\.1\lib\wxp\*
HOMEDRIVE=C:
HOMEPATH=\Users\Administrator
IFSKIT_INC_PATH=C:\WinDDK\.1\inc\ddk
IFSKIT_LIB_DEST=C:\WinDDK\.1\lib\wxp
IFSKIT_LIB_PATH=C:\WinDDK\.1\lib\wxp\*
Include=C:\WinDDK\.1\inc\api
KMDF_INC_PATH=C:\WinDDK\.1\inc\wdf\kmdf
KMDF_LIB_PATH=C:\WinDDK\.1\lib\wdf\kmdf\*
LANGUAGE_NEUTRAL=0
Lib=C:\WinDDK\.1\lib
LINK_LIB_IGNORE=4198
LOCALAPPDATA=C:\Users\Administrator\AppData\Local
LOGONSERVER=\\XT1-YGA
MFC_INC_PATH=C:\WinDDK\.1\inc\mfc42
MFC_LIB_PATH=C:\WinDDK\.1\lib\mfc\*
MSC_OPTIMIZATION=/Od /Oi
NEW_CRTS=1
NO_BINPLACE=TRUE
NO_BROWSER_FILE=TRUE
NTDBGFILES=1
NTDEBUG=ntsd
NTDEBUGTYPE=both
NTMAKEENV=C:\WinDDK\.1\bin
NUMBER_OF_PROCESSORS=4
OAK_INC_PATH=C:\WinDDK\.1\inc\api
OS=Windows_NT
Path=C:\WinDDK\.1\bin\amd64;C:\WinDDK\.1\tools\sdv\C:\WinDDK\.1\bin\x86\C:\WinDDK\.1\tools\pfd\bin\bin\x86;C:\WinDDK\.1\tools\tracing\i386;C:\WinDDK\.1\bin\x86;C:\WinDDK\.1\bin\x86\x86;C:\WinDDK\.1\bin\SelfSC:\Windows\system32;C:\WC:\Windows\System32\WC:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PREFAST_VALID_IMPLIES_NOTNULL=1
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 58 Stepping 9, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=3a09
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROJECT_ROOT=C:\WinDDK\.1\src
PROMPT=$P$G
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
PUBLIC_ROOT=C:\WinDDK\.1
PUBLISH_CMD=@echo Publish not available...
RAZZLETOOLPATH=C:\WinDDK\.1\Bin
RCNOFONTMAP=1
SDK_INC_PATH=C:\WinDDK\.1\inc\api
SDK_LIB_DEST=C:\WinDDK\.1\lib\wxp
SDK_LIB_PATH=C:\WinDDK\.1\lib\wxp\*
SDV=C:\WinDDK\.1\tools\sdv
separate_object_root=FALSE
SESSIONNAME=Console
SUBSTITUTE_386_CC=C:\WinDDK\.1\Bin\x86\oacr\oacrcl
SUBSTITUTE_AMD64_CC=C:\WinDDK\.1\Bin\x86\oacr\oacrcl
SUBSTITUTE_CS_COMPILER_NAME=C:\WinDDK\.1\BIN\x86\oacr\oacrcsc /nologo
SUBSTITUTE_LINK=C:\WinDDK\.1\Bin\x86\oacr\oacrlink
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\ADMINI~1\AppData\Local\Temp
TMP=C:\Users\ADMINI~1\AppData\Local\Temp
UMDF_INC_PATH=C:\WinDDK\.1\inc\wdf\umdf
USERDOMAIN=XT1-YGA
USERNAME=WinDDK
USERPROFILE=C:\Users\Administrator
USE_OBJECT_ROOT=1
VBOX_MSI_INSTALL_PATH=C:\Program Files\Oracle\VirtualBox\
VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\
WDM_INC_PATH=C:\WinDDK\.1\inc\ddk
windir=C:\Windows
windows_tracing_flags=3
windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log
WPP_CONFIG_PATH=C:\WinDDK\.1\bin\wppconfig
_BUILDARCH=x86
_BuildType=chk
_DFX_INSTALL_UNSIGNED_DRIVER=1
_IA32bit=true
_NTDRIVE=C:
_NTROOT=\WinDDK\.1
_NT_TARGET_VERSION=0x501
_OACR_ERROR_LEVEL=0
_RunOacr=TRUE
在这里,就能找到“DDK_LIB_PATH”等环境变量定义值了。(如上我开启的是WinXP的Check版本的编译环境)
举一反三:
① &启动一个默认的CMD命令行环境,执行“set &c:\1.txt”后,再开启VS2012的命令行提示编译环境,执行“set &c:\2.txt”,用文件比较工具比较两个文件的不同。这两个文件的不同,就是VS2012命令行编译环境做的特殊设置。
② 用同样的方式,可以查看WinCE5.0、Tornado2.2命令行编译设置的不同;
② 用同样的方式,查看Visual Studio之间做的设置环境变量区别:VC++6.0的设置环境变量位置一般在“C:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin”下,为“VCVARS32.BAT”;VS2005,VS2008,VS2012分别在菜单下有命令行编译提示工具设置;
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:474565次
积分:6949
积分:6949
排名:第1663名
原创:235篇
转载:26篇
评论:79条
(2)(4)(1)(1)(2)(6)(1)(6)(7)(1)(6)(2)(9)(2)(4)(1)(3)(4)(1)(2)(11)(8)(5)(18)(2)(1)(7)(1)(3)(9)(11)(8)(13)(5)(1)(8)(2)(5)(17)(4)(6)(1)(1)(5)(6)(2)(3)(1)(8)(5)(5)(2)(3)(12)(4)(1)您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
WDK框架驱动和的应用程序交互通信实现(附加代码).pdf17页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:100 &&
毕业论文,完美PDF格式,可在线免费浏览全文和下载,支持复制编辑,可为大学生本专业本院系本科专科大专学士相关类学生提供毕业论文范文范例指导,也可为要代写发表职称论文提供参考!!!
你可能关注的文档:
··········
··········
WDK框架驱动和应用程序的交互通信实现(附加代码)
学习各种高级外挂制作技术,马上去百度搜索 "魔鬼作坊",点击第一个站进入,
快速成为做挂达人。
在学习wdk驱动的时候,关于通讯这块介绍真的很少,加上《天书夜读》没有公开代码,所以实现起来真
的很困难,所以在学习的过程中做了些小结,附上源码,希望对初学者有一些帮助。目录如下,如果有用
过虚拟机,第三章可以忽略。时间比较宝贵的直接看第五章。word文档里面有超链接,阅读也方便一点。
从某种程度上说,这个算是自己第一次发帖,所以大家多多指教。
附件如下:
《天书夜读》Windows驱动编程基础教程.rar
总的word文件:WDK下驱动和应用层序通信.rar
第一章 VC6.0 +WDK(.1) 开发驱动的环境配置 1
第二章 设备和符号链接生成以及删除 2
第三章 虚拟机运行 3
第四章 应用程序向驱动程序发送消息 7
第五章 驱动程序主动发消息给应用程序 10
第一章 VC6.0 +WDK(.1) 开发驱动的环境配置
(1)第一步:打开VC建立一个Win32 Application工程,然后选择An empty Project。
(2)第二步:随便找一个驱动程序,主要是.C,.h及rc资源文件,加入第一步建立的工程
(3) 第三步: 设置VC编译驱动的环境,这才是重点。打开VC的Tool- Options- Directories里设置
Include,Lib,及Exectuable File。
设置Include路径:
C:/WINDDK/.1/INC
C:/WinDDK/.1/INC/wdf
C:/WinDDK/.1/INC/wdf/kmdf/1.9
C:/WINDDK/.1/INC/CRT
C:/WINDDK/.1/INC/DDK
C:/WINDDK/.1/INC/API
这里可能有些不需要,也可能少了,根据自己的情况在INC目录下继
续添加就OK了)
正在加载中,请稍后...

我要回帖

更多关于 c语言字符串函数 的文章

 

随机推荐