Windows内核驱动开发构建选项

Windows内核驱动开发构建选项

在Windows内核驱动开发(WDK)中,编译器和链接器的选项配置至关重要,它们决定了驱动能否在内核环境中稳定运行。以下以Windows 10(Win10)为例,梳理开发驱动时必须定义的宏、编译选项及链接选项。


1. 编译器定义的关键宏

强制定义宏(在项目属性中设置)

宏 值 含义 必要性
_AMD64_ 或 _X86_ 1 指定目标架构 必须
_KERNEL_MODE 1 编译内核模式代码 必须
WIN32 或 _WIN32 1 Windows 平台 必须
_WIN64 1 64位系统 仅 64 位时
STD_CALL 1 调用约定 通常自动
NT_INST 0 内核模式标识 必须

版本控制宏

c 复制代码
// 在源文件中定义
#define NTDDI_VERSION NTDDI_WIN10_RS3  // Windows 10 1709
#define _WIN32_WINNT 0x0A00            // Windows 10
#define WINVER 0x0A00                  // Windows 10

2. 编译器选项(/编译开关)

开关 含义 示例值 说明
/kernel 内核模式代码 /kernel 最关键,启用内核语义检查
/GS 缓冲区安全检查 /GS 必须启用
/guard:cf 控制流保护 /guard:cf Windows 8.1+ 需要
/Zl 省略默认库名 /Zl 避免链接用户态库
/Oi 生成内部函数 /Oi 优化
/GF 字符串池 /GF 优化字符串
/W4 警告级别 /W4 推荐最高警告级别
/WX 视警告为错误 /WX 推荐开启
/volatile:iso volatile语义 /volatile:iso 正确内存访问
/Zc:wchar_t- wchar_t类型 /Zc:wchar_t- 兼容旧代码

完整示例:

复制代码
/kernel /GS /guard:cf /Zl /Oi /GF /W4 /WX /volatile:iso /Zc:wchar_t-

3. 链接器选项

开关 含义 示例值 说明
/DRIVER 生成驱动 /DRIVER 最关键,创建 .sys 文件
/DYNAMICBASE:NO 禁用ASLR /DYNAMICBASE:NO 内核驱动通常需要固定基址
/RELEASE 设置校验和 /RELEASE 设置文件头校验和
/ENTRY 入口点 /ENTRY:DriverEntry 指定驱动入口函数
/SUBSYSTEM:NATIVE 子系统 /SUBSYSTEM:NATIVE 内核驱动子系统
/NODEFAULTLIB 无默认库 /NODEFAULTLIB 不链接标准C库
/MERGE 节合并 /MERGE:.rdata=.data 优化节大小
/INTEGRITYCHECK 完整性检查 /INTEGRITYCHECK 强制签名检查
/SAFESEH:NO 禁用SEH /SAFESEH:NO 内核模式无SEH

库文件:

复制代码
ntoskrnl.lib
hal.lib

相关推荐
YCOSA20258 小时前
Windows11_InsiderPreview_EnterpriseVL_x64_zh-cn_29680_1000.iso 官方直链
windows
怎么没有名字注册了啊9 小时前
Windows Server 2008 R2 如何开启Aero
windows
gwf21610 小时前
Completion Queue(CQ)与中断处理:轮询、中断聚合与错误码 —— 面向AI集群的驱动级深度剖析
驱动开发·性能调优·pcie·rdma·ai集群·中断聚合·cq
lingchen190611 小时前
Windows CMD 的 `cd`(change directory,切换目录)命令
windows·命令模式
ITHAOGE1512 小时前
下载 | Win11 26H2 正式版发布!(ISO映像、2026年度版本、26300.9457、Windows 11)
windows·科技·微软·电脑
YCOSA202513 小时前
雨晨 Windows 11 IoT 企业版 Edge 轻装 VCDX 29680.1000
windows·物联网
笨笨努力中15 小时前
2002年Windows XP系统下载视频资源迁移云盘
windows
l1t16 小时前
修复WSL CreateInstance/E_UNEXPECTED和 mounted read-only 错误
linux·windows·wsl
kakakahahahaha17 小时前
Windows电脑卡死恢复流程:任务管理器、Ctrl Alt Delete、explorer与DWM重启
windows·电脑·笔记本电脑·软件需求·电脑卡死
kakakahahahaha17 小时前
Windows鼠标失灵排查:Ctrl Alt Delete、Mouse Keys、USB控制器与驱动修复
windows·驱动开发·电脑·笔记本电脑·软件需求