首页
社区
课程
招聘
一个自定义向导
2013-11-9 22:59 3634

一个自定义向导

2013-11-9 22:59
3634
初学,想自己弄个模板,就在网上搜了些资料修改了一下,初学的时候尝试一下也不错的。

1新建自定义向导,去掉用户界面选项。


2、添加模板文件driverMain.c。


3、修改Templates.inf文件。


4、修改driverWizard.vsz文件。


5、修改default.js文件。
1)修改function AddFilters(proj)


2)修改function AddConfig(proj, strProjectName)

            ///////////////////////////////////////////Debug//////////////////////////////////////////
            var config = proj.Object.Configurations('Debug');
        //vs2010输出目录
            config.IntermediateDirectory = '$(Configuration)\\';
            config.OutputDirectory = '$(SolutionDir)$(Configuration)\\';
            //VS2008输出目录
        //config.IntermediateDirectory = '$(ConfigurationName)\\';
            //config.OutputDirectory = '$(SolutionDir)$(ConfigurationName)\\';
            config.CharacterSet = charSet.charSetUnicode; //设置字符集
            //config.useOfMfc = useOfMfc.useMfcDynamic; //设置共享库

            var CLTool = config.Tools('VCCLCompilerTool');
            // TODO: 添加编译器设置
            CLTool.CompileAs = CompileAsOptions.compileAsC; //编译为C代码
            //debugOldStyleInfo(C7兼容)、debugEnabled(程序数据库)、debugEditAndContinue(编辑并继续)
            CLTool.DebugInformationFormat = debugOldStyleInfo;
            CLTool.WarningLevel = warningLevelOption.warningLevel_2; //警告等级
            CLTool.WarnAsError = true; //警告视为错误
            CLTool.Optimization = optimizeOption.optimizeDisabled; //Disabled (/Od)
            CLTool.PreprocessorDefinitions = "WIN32=100;_X86_=1;WINVER=0x501;DBG=1"; //预处理器定义
            CLTool.MinimalRebuild = false; //不启用最小重新生成
            CLTool.BasicRuntimeChecks = basicRuntimeCheckOption.runtimeBasicCheckNone; //基本运行时检查(Default)
            CLTool.RuntimeLibrary = runtimeLibraryOption.rtMultiThreadedDebug; //运行库(Multi-threaded Debug (/MTd))
            CLTool.BufferSecurityCheck = false; //缓冲区安全检查 否
            CLTool.CallingConvention = callingConventionOption.callConventionStdCall; //调用约定
            CLTool.AdditionalIncludeDirectories = "D:\\WinDDK\\7600.16385.1\\inc\\ddk;D:\\WinDDK\\7600.16385.1\\inc\\crt;D:\\WinDDK\\7600.16385.1\\inc\\api;";
            //CLTool.SuppressStartupBanner = true; //启动版权标识
            //CLTool.UsePrecompiledHeader = pchOption.pchCreateUsingSpecific; //使用预编译头
            //CLTool.PrecompiledHeaderThrough = "StdAfx.h"; //通过文件创建/使用PCH
            //CLTool.PrecompiledHeaderFile = '$(IntDir)\$(TargetName).pch'; //预编译头文件

            var LinkTool = config.Tools('VCLinkerTool');
            // TODO: 添加链接器设置
        //VS2010输出
            LinkTool.OutputFile = "$(OutDir)$(TargetName).sys"; //输出文件
        //VS2008输出
            //LinkTool.OutputFile = "$(OutDir)\$(ProjectName).sys"; //输出文件
            LinkTool.LinkIncremental = linkIncrementalType.linkIncrementalNo; //不启用增量链接
            LinkTool.IgnoreImportLibrary = true; //忽略导入库
            LinkTool.AdditionalDependencies = "ntoskrnl.lib Hal.lib wdm.lib wdmsec.lib wmilib.lib ndis.lib"; //添加依赖项
            LinkTool.IgnoreAllDefaultLibraries = true; //忽略所有默认库
            LinkTool.EnableUAC = false; //不启用用户账户控制
            LinkTool.GenerateDebugInformation = true; //生成调试信息
            LinkTool.GenerateMapFile = true; //生成映像文件
            LinkTool.MapFileName = "$(TargetDir)$(TargetName).map"; //映像文件名
            LinkTool.SubSystem = subSystemOption.subSystemConsole; //子系统控制台
            LinkTool.HeapReserveSize = 4194304; //堆栈保留大小0x400000
            LinkTool.HeapCommitSize = 4096; //堆栈提交大小4096
            LinkTool.driver = driverOption.driver; //驱动程序
            LinkTool.EntryPointSymbol = "DriverEntry"; //入口点
            LinkTool.RandomizedBaseAddress = enumRandomizedBaseAddressBOOL.RandomizedBaseAddressDefault; //随机基址默认值
            LinkTool.DataExecutionPrevention = enumDataExecutionPreventionBOOL.DataExecutionPreventionDefault; //数据执行保护 默认值
            LinkTool.SetChecksum = true; //设置校验和
            LinkTool.AdditionalOptions = "/SECTION:INIT,D /IGNORE:4078"; //命令行选项

            //LinkTool.ProgramDatabaseFile = "$(outdir)/" + strProjectName + ".pdb";
            LinkTool.ProgramDatabaseFile = "$(TargetDir)$(TargetName).pdb"; //符号文件
            //LinkTool.SuppressStartupBanner = true;  // nologo
            LinkTool.AdditionalLibraryDirectories = "D:\\WinDDK\\7600.16385.1\\lib\\wxp\\i386;D:\\WinDDK\\7600.16385.1\\lib\\Crt\\i386";

            ////////////////////////////////////////////////Release//////////////////////////////////////////
            config = proj.Object.Configurations('Release');
            config.IntermediateDirectory = '$(ConfigurationName)';
            config.OutputDirectory = '$(SolutionDir)$(ConfigurationName)';
            config.CharacterSet = charSet.charSetUnicode;
            config.useOfMfc = useOfMfc.useMfcDynamic;

            var CLTool = config.Tools('VCCLCompilerTool');
            // TODO: 添加编译器设置
            CLTool.UsePrecompiledHeader = pchOption.pchCreateUsingSpecific;
            CLTool.PrecompiledHeaderThrough = "StdAfx.h";
            CLTool.PrecompiledHeaderFile = '$(IntDir)\$(TargetName).pch';
            CLTool.WarningLevel = warningLevelOption.warningLevel_3;
            CLTool.Optimization = optimizeOption.optimizeMaxSpeed;
            CLTool.EnableIntrinsicFunctions = true;
            CLTool.PreprocessorDefinitions = "WIN32;_WINDOWS;NDEBUG";
            CLTool.RuntimeLibrary = runtimeLibraryOption.rtMultiThreadedDll;

            var LinkTool = config.Tools('VCLinkerTool');
            // TODO: 添加链接器设置
            LinkTool.AdditionalDependencies = "opengl32.lib glu32.lib";
            LinkTool.LinkIncremental = linkIncrementalType.linkIncrementalNo;
            LinkTool.SubSystem = subSystemOption.Windows;

注意:目录信息等根据实际情况填写。
Release部分没有修改。

把以上部分对应填写后可以正常使用,VS2008和VS2010都可以编译通过,编译的sys能不能用就不知道了。



参考
http://support.microsoft.com/kb/810455/zh-cn
http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool.aspx
http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.VCProjectEngine.VCLinkerTool.aspx

http://www.codeproject.com/Articles/32575/OpenGL-MFC-AppWizard?fid=1533755&df=10000&mpp=10&noise=1&prof=True&sort=Position&view=None&spc=Relaxed&select=2893345&fr=1

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回