阅读:3307回复:4
内核创建事件后,应用端打开错误(指定的路径无效)
内核创建事件:
// 定义事件对象名称 #define EVENT_NAME L"\\BaseNamedObjects\\ProcEvent" #define EVENT_NAME2 L"\\BaseNamedObjects\\ProcEvent2" ..................... eviceExtension->ProcessEvent = IoCreateNotificationEvent(&ProcessEventString, &deviceExtension->hProcessHandle); KeClearEvent(deviceExtension->ProcessEvent); // 非受信状态 KdPrint(("[ProcMon] deviceExtension->ProcessEvent: 0x%X\n", deviceExtension->ProcessEvent));//正常创建 deviceExtension->ProcessEvent2 = IoCreateNotificationEvent(&ProcessEventString2, &deviceExtension->hProcessHandle); KdPrint(("[ProcMon] deviceExtension->ProcessEvent2: 0x%X\n", deviceExtension->ProcessEvent2));//正常创建 KeClearEvent(deviceExtension->ProcessEvent2); // 非受信状态 应用端: ............... // 打开内核事件对象 HANDLE hProcessEvent = ::OpenEventW(SYNCHRONIZE, FALSE, EVENT_NAME); if(hProcessEvent == NULL){ printf("%d\n", GetLastError());//错误代码 161 :指定的路径无效 } HANDLE hProcessEvent2 = ::OpenEventW(SYNCHRONIZE, FALSE, EVENT_NAME2); if(hProcessEvent2 == NULL){ printf("%d\n", GetLastError());//错误代码 161 :指定的路径无效 } printf("事件对象: 1: %X 2: %X\n", hProcessEvent, hProcessEvent2);//都为 0 各位大大帮我诊断一下, 另外,将事件对象改为 #define EVENT_NAME L"\\\\BaseNamedObjects\\ProcEvent" #define EVENT_NAME2 L"\\\\BaseNamedObjects\\ProcEvent2" 直接蓝屏 新编辑后 描述:驱动创建事件 图片:Snap4.jpg 描述:应用及其执行情况 图片:无标题.jpg |
|
|
沙发#
发布于:2010-06-30 12:24
使用objdir查看这个事件是不是真的创建了。
在WINDOW登录前,BaseNamedObjects是没有创建的。 |
|
|
板凳#
发布于:2010-07-01 09:11
谢谢楼上的牛牛,我是在虚拟机里面测试的。是在系统已经启动的情况下,通过instdriv程序加载驱动。所以BaseNamedObjects应该是创建好了的哦。并且在内核里打印的句柄也表示2个事件创建成功。
现在关键是应用层的,真晕 |
|
|
禁止发言
|
地板#
发布于:2010-07-02 14:36
用户被禁言,该主题自动屏蔽! |
地下室#
发布于:2010-07-14 14:40
汗,在应用中,以这种方式打开就可以了。
HANDLE hProcessEvent = ::OpenEventW(SYNCHRONIZE, FALSE, L"ProcEvent"); |
|
|