win7下error1275(driver blocked from loading)solution

本文介绍了解决Windows 7环境下驱动加载失败(Error1275)的问题,提供了包括禁用数字签名、使用bcdedit命令、修改PE文件等方法,并探讨了数字签名的相关流程。

最近几天一直纠结于这个问题,编译的一个win7下面的协议驱动总是无法加载;

error1275  (driver block from loading)

网上搜索了一下,大致都是绕过win7的数字签名检查,但是我这个不适用;

大致的流程

1.确保编译没有错误;

我是安装了winddk环境,

如果需要搭建win7驱动开发环境可以参考这里:

http://rambowu.com/2010/12/29/vs2008-%E3%80%81wdk-%E5%92%8Cddkwizard%E6%90%AD%E5%BB%BAwin-7%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83-%EF%BC%88%E6%94%B6%E8%97%8F%EF%BC%89/

利用自带的环境编译工具;

调试辅助:

1)可以结合Debugview在driver 添加dbgprint检查信息;

2)结合win7下系统日志

确保自己的编译平台没有问题: x86-x64-IA64

2.通用解决方法

1)启动时按F8选择用“禁用驱动程序签名强制”模式进入系统

2)bcdedit  /set testsigning on

然后重启动就可以关闭强制数字签名但是启动到桌面后会有提示水印

3) bcdedit -set loadoptions DDISABLE_INTEGRITY_CHECKS

4)关闭UAC

论坛上很多人说有可能奏效;

(大家有在这里讨论:

http://topic.youkuaiyun.com/u/20100208/21/f5d51779-9fcf-450b-b97c-694be534f2d4.html

3.数字签名

1)通过官方的签名流程

2)通过签名工具

http://rambowu.com/2010/12/31/%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E6%95%B0%E5%AD%97%

E7%AD%BE%E5%90%8D%E5%B7%A5%E5%85%B7/

3)通过自己手动修改(驱动的pe部分)

http://rambowu.com/2010/12/31/%E6%89%8B%E5%B7%A5%E6%B7%BB%E5%8A%A0%E6%95%B0%E5%AD%97%E7

%AD%BE%E5%90%8D%E6%94%B6%E8%97%8F/

### 任务或流程状态的可能取值及其含义 在任务调度系统中,例如 Quartz 框架,任务的状态用于描述任务的执行情况和生命周期。以下是常见的任务状态及其含义: #### `NORMAL` - 表示任务处于正常运行状态,可以被调度器按照预定的时间表执行。 - 此状态表明任务没有被暂停、阻塞或出现错误,处于可执行状态 [^1]。 #### `PAUSED` - 表示任务已被暂停,暂时不会被调度器执行。 - 这种状态通常用于手动或自动暂停任务的执行,直到任务被重新激活 [^1]。 #### `COMPLETE` - 表示任务已经完成执行,但可能相关的触发器(Trigger)还未被清理。 - 在此状态下,任务本身可能已经结束,但调度器可能仍然保留一些与任务相关的元数据 [^1]。 #### `ERROR` - 表示任务在执行过程中发生了错误,导致任务无法正常完成。 - 此状态通常需要人工干预或系统自动修复后才能恢复正常 [^2]。 #### `BLOCKED` - 表示任务当前处于线程阻塞状态,无法继续执行。 - 这种状态可能是由于任务依赖的资源不可用,或者任务本身存在死锁等问题 [^1]。 ### 示例代码:任务状态的管理 以下是一个简单的代码示例,展示如何通过 Quartz 框架管理任务状态: ```java import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; public class QuartzJobExample { public static void main(String[] args) throws SchedulerException, InterruptedException { // 创建调度器 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); // 定义任务 JobDetail job = JobBuilder.newJob(MyJob.class) .withIdentity("myJob", "group1") .build(); // 定义触发器 Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10) .repeatForever()) .build(); // 将任务和触发器注册到调度器 scheduler.scheduleJob(job, trigger); // 启动调度器 scheduler.start(); // 保持主线程运行,以便任务可以执行 TimeUnit.SECONDS.sleep(30); // 休眠30秒以确保任务执行 [^3] // 暂停任务 scheduler.pauseJob(job.getKey()); // 恢复任务 scheduler.resumeJob(job.getKey()); // 关闭调度器 scheduler.shutdown(); } public static class MyJob implements Job { @Override public void execute(JobExecutionContext context) { System.out.println("任务正在执行..."); } } } ``` ### 总结 任务状态是任务调度系统中的重要概念,用于描述任务的执行情况。通过理解这些状态,可以更好地管理和调试任务调度系统。常见的任务状态包括 `NORMAL`、`PAUSED`、`COMPLETE`、`ERROR` 和 `BLOCKED`,每种状态都有其特定的含义和用途 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值