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

一个自定义向导

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

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能不能用就不知道了。



参考
9c8K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4y4#2M7s2m8G2M7Y4c8Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6C8j5W2)9J5c8U0R3I4x3o6b7#2y4g2)9J5c8Y4A6Z5i4K6u0V1j5$3^5`.
1a3K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3&6Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6W2L8W2)9J5k6s2g2K6i4K6u0r3L8r3W2T1M7X3q4J5P5g2)9J5c8V1#2A6j5%4u0G2M7$3!0X3N6q4)9J5k6g2k6A6M7%4g2S2L8q4y4@1N6h3c8A6L8#2)9J5k6g2k6o6f1s2u0G2K9X3g2U0N6p5g2F1k6$3W2F1k6g2)9J5k6g2k6o6b7@1I4o6L8$3#2H3K9h3I4W2M7W2c8G2L8$3I4Q4x3X3g2S2M7%4m8^5
dfbK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3&6Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6W2L8W2)9J5k6s2g2K6i4K6u0r3L8r3W2T1M7X3q4J5P5g2)9J5c8V1#2A6j5%4u0G2M7$3!0X3N6q4)9J5k6g2k6A6M7%4g2S2L8q4y4@1N6h3c8A6L8#2)9J5k6g2k6o6f1s2u0G2K9X3g2U0N6p5g2F1k6$3W2F1k6g2)9J5k6g2k6o6e0r3W2F1K9$3g2J5g2r3!0G2L8q4)9J5k6h3q4K6M7s2R3`.

7c8K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4G2k6r3g2H3M7X3!0B7k6h3y4@1i4K6u0W2j5$3!0E0i4K6u0r3b7i4u0@1K9h3y4D9k6i4y4Q4x3V1j5K6x3U0f1%4y4g2)9J5c8V1!0H3k6h3&6s2e0q4)9J5k6p5#2r3b7#2)9J5k6p5q4H3M7q4N6A6P5X3q4J5k6q4)9K6c8X3k6A6k6q4)9K6c8o6p5#2x3K6x3%4y4e0g2Q4x3U0k6V1k6W2)9K6c8o6p5H3x3o6l9H3i4K6t1$3L8i4m8H3i4K6y4p5x3e0m8Q4x3U0k6F1L8$3W2K6k6g2)9K6c8o6q4Q4x3U0k6H3M7X3!0X3i4K6y4p5g2s2u0#2k6g2)9J5y4Y4y4G2M7Y4c8Q4x3@1c8b7L8%4y4A6N6r3W2G2L8W2)9J5y4Y4k6A6k6i4N6Q4x3@1c8z5L8$3&6W2i4K6t1$3M7%4m8U0i4K6y4p5f1X3g2D9j5i4S2W2k6q4)9J5y4Y4y4W2L8r3g2U0N6q4)9K6c8o6t1^5z5e0x3K6y4o6g2Q4x3U0k6X3M7W2)9K6c8o6p5`.

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回