RT,写wince驱动有一段时间了,但是很惭愧,到现在还没搞清楚内核态驱动和用户态驱动的区别,特来请教
我也很惭愧,我最大的认识就是内核态驱动的优先级比用户态高。
我在PB帮助看到,内核态所在的进程地址和用户态隔离,其他东西太复杂了,大家一起来学习进步了。以前只是看书,但是真的不怎么深入理解。
我也没搞明白。我写的都是普通的驱动,没有调用setkmode,但是好像也没什么现在啊。
不是说需要在注册表中限制访问范围吗,我没写,也没见到那个驱动有这样写啊。
是的,wince6才区分为用户模式与内核模式。
用户模式:
驱动程序是加载在 udevice.exe进程. udevice.exe与普通应用程序一样也是用户态的进程.
应用程序希望能够与外设进行交互时,都需要通过操作系统内核转发请求到相应的驱动程序。这样一个请求就可以需要反复的进出内核多次,还需要在不同的进程间进行切换.
优点是操作系统的稳定性得到了提高,不会因为某个设备驱动中的缺陷而使整个操作系统崩溃.
缺点是完成请求的效率太低.
内核模式:
驱动程序完成一个请求不再需要在不同的进程下进行切换,也不需要反复的进出内核。
优点是内核模式下的驱动程序完成请求的效率将会大大的提高。
缺点是内核里的任何一个错误都可能引起整个操作系统的崩溃。
建议刚开始写的驱动先放在用户模式下跑,等驱动程序稳定了,再改成内核模式运行。