x64 Windows 10下Minifilter驱动注册失败问题求助
问题分析与解决:Minifilter驱动启动失败(STATUS_OBJECT_NAME_NOT_FOUND + SC错误2)
问题现象
- 编译x64 Windows 10基础Minifilter驱动无异常,处于测试模式且驱动签名有效。
- 使用
sc create type= kernel binPath= "C:\...\driver.sys"注册驱动后,执行sc start driver返回:[SC] StartService FAILED 2: The system cannot find the file specified. - DebugView输出驱动加载时的错误:
SimpleMinifilter: FltRegisterFilter failed with status 0xc0000034(对应STATUS_OBJECT_NAME_NOT_FOUND)。
核心原因
- 驱动依赖缺失:Minifilter驱动必须依赖系统的Filter Manager(
fltmgr.sys)才能正常注册。未指定依赖项时,驱动启动时fltmgr.sys可能未加载,导致FltRegisterFilter无法找到Filter Manager的内核对象,返回STATUS_OBJECT_NAME_NOT_FOUND。 - 服务启动状态误报:由于
DriverEntry返回了非成功状态,服务控制管理器(SCM)会判定驱动加载失败,进而返回错误2(找不到文件),但实际驱动已被加载并输出调试信息。
解决步骤
1. 重新创建服务并添加依赖项
删除原有服务后,重新创建时指定依赖fltmgr:
sc delete driver sc create driver type= kernel binPath= "C:\完整路径\driver.sys" depend= fltmgr
注意:
depend=后需保留空格,binPath的路径必须是完整的绝对路径,双引号内的反斜杠用单个\即可。
2. 验证FLT_REGISTRATION结构
确认你的FLT_REGISTRATION结构参数正确:
FLT_REGISTRATION_VERSION宏是当前Minifilter框架的正确版本,无需修改。- 若后续添加回调,确保
Callbacks数组的终止项IRP_MJ_OPERATION_END正确。
3. 确认驱动文件路径与权限
- 检查
binPath中的路径是否完全正确,可将驱动文件复制到C:\Windows\System32\drivers目录下简化路径测试。 - 确保驱动文件拥有系统权限:右键→属性→安全→添加SYSTEM用户并赋予完全控制权限。
4. 启动驱动并验证
执行启动命令:
sc start driver
此时DebugView应输出SimpleMinifilter: Loaded and filtering,说明驱动成功加载并注册。
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

