约有 74 项符合查询结果, 以下是第 4 - 8项。
费时 < 1 秒。
请问一下各位老师,卸载设备调用的是什么系统调用?比如就是像windows托盘处卸载usb设备时的系统调用。 用SetupDixxx API的结果是将驱动包一块卸掉了,重新插入设备时不仅重新加载驱动,还需重新安装驱动,和设备管理其中的卸载驱动效果一样。 而托盘处的卸载应只是卸载了驱动的加载,并未影响驱动在系统中的注册,重新插入设备只是加载一下就完成了,请问windows是如何做到的?
Posted in Windows内核调试
by
zyq8709
on 2011-08-11
网站终于开通啦,等了好久,前来祝贺!
Posted in 社区活动
by
zyq8709
on 2011-08-04
多谢张老师,我对底层的东西喜欢弄个清楚,对事物喜欢一问到底,非要搞个明明白白,要不就不舒服,可能也有点过于苛求了吧。
您讲了之后,我又上网搜了搜并看了一下wrk,我明白了这其中的关键作用就是现在用的APIC,他可以进行中断级别的智能判断和恢复挂起的中断,这就是系统所用的,是这样的吧?多谢您了!
Posted in Windows内核调试
by
zyq8709
on 2011-06-27
十分感谢张老师的回答,我刚才看了一下,我把代码发错了,我调试的不是这个版本,而是带有那两个错误调用的。
张老师的回答让我有些清醒了,但是我还有一些疑问:就是KeWaitForSingleObject调用之后会调用KiSwapThread例程来切换线程,为何会引发时钟中断来切换线程?
是不是在时钟中断中还有对Irql级别的判断,超过了2就不会进行线程调度?
多谢张老师了!
Posted in Windows内核调试
by
zyq8709
on 2011-06-27
我按照王老师的指导修改了代码,只是将设置事件放到了IRP_MJ_CREATE派遣函数,其他的包括违例的IRQL使用都没改,结果竟然一点问题都没了,难道MS关于IRQL的文档说明有问题,请各位老师关注一下,多谢了!
修改后的代码与运行截图见附件。
Posted in Windows内核调试
by
zyq8709
on 2011-06-23
张老师,我这样是有用意的。
第一次降低是正常的,第二次我用一个高于当前的Irql来降低目的是为了观察KfLowerIrql对于这种错误的处理,但是我发现并未出现任何错误,而且当前Irql被改为了Dispatch级,然后在该级别上调用KeWaitForSingleObject来观察错误,同样的是等待函数中每一步都被执行了,而且也正常的进入了KiSwapThread和KiSwapContext,并切换了上下文进入了另一个线程,然后再观察系统,一切如常。如果只是一个CPU核心被阻塞,那么我再加载一次驱动安装一个设备,一切仍然如常。我CPU是双核的,但是加载了两次按理说就算是阻塞,也是两个都被阻塞了,然而系统该怎么操作都没有问题,这十分奇怪,并与公认的说法相违背,请各位老师再费心了!
Posted in Windows内核调试
by
zyq8709
on 2011-06-23
多谢王老师的解答,确实是在执行一个收回的地址,所以出错。那么如果我不在Unload例程中设置事件,而是在其他派遣函数中设置也就是在没被卸载的驱动中执行,是不是就不会出错了?那么对于KeWaitForSingleObject对Irql级别的要求又该怎么解释呢?
Posted in Windows内核调试
by
zyq8709
on 2011-06-23
张老师您好,调试环境是VMware加XP SP2。我理解的的调度器也就是一段运行在Dispatch级上的KiSwapThread例程,无论是KfLowerIrql还是KeWaitForSingleObject都是先提升Irql再调用KiSwapContext导致线程切换,感觉也就是一段简单的函数调用,没有什么特别之处,至于说调度器只是一个形象的说法。请各位老师再看一看我发现的另一个关于KfLowerIrql调用时违例却无错误发生的问题(http://advdbg.org/forums/4961/ShowPost.aspx),应该和这个问题有一定联系。
附件为代码和dump文件。
Posted in Windows内核调试
by
zyq8709
on 2011-06-23
张老师您好,我是一个毕业生,自学的计算机,现在在复习考研。看了您的书,感觉学到了许多。
Posted in Windows内核调试
by
zyq8709
on 2011-06-23