-
-
一个自定义向导
-
发表于: 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`.
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`.
赞赏
谁下载
谁下载
谁下载
赞赏
雪币:
留言: