阅读:1283回复:2
用DDK开发的驱动在32位vista下的进程间通信问题
最近在工作中遇到一个进程间通信的问题:在vista环境下,一个用DDK开发的虚拟打印的驱动程序,当使用PostThreadMessage()在两个进程间通信的时候,消息发送失败,总是返回1444错误,经查应该是“无效的线程标识”,即不识别的线程ID。用事件通知方式的时候,在OpenEvent()时总是返回失败,提示找不到该事件。但是用MFC写的测试程序中,无论是用PostThreadMessage()还是OpenEvent(),都可以在vista下的两个进程之间正常通信,因此总感觉应该是DDK在vista下的应用有问题。
这段程序在XP、2000等操作系统上运行正常,只有在vista上不能正常通信。不知道是vista都有了哪些安全限制上的提高而导致的。 找了很久资料,也没看到vista上DDK的相关开发资料。 真心的希望各位高人能给予指点、赐教,万分感谢!!! |
|
沙发#
发布于:2007-07-17 11:54
突然想起来,是不是跟DDK的版本有关系啊?汗。。。
我用的是win2kddk,这个版本的DDK编译出来的驱动在vista下运行都会导致什么问题啊? |
|
板凳#
发布于:2007-07-24 11:05
还是没人能解答么?
也许是我的问题描述得不清楚吧? 不过现在看来不是编译环境的问题了。用vista WDK编译后问题依旧。 经过测试,该问题只在spoolsv进程下调用时出现,而在其它进程中调用是运行正常的。 单独写的一个测试程序用来PostThreeadMessage和OpenEvent,该程序用命令行方式传参数进行调用,结果其它进程调用都没问题,惟独用spoolsv进程调用时无效。 spoolsv进程很容易被木马利用,所以我想是不是vista在提高安全的时候,对spoolsv进程进行了什么限制啊? |
|