阅读:2054回复:2
怎样使用IoCreateSynchronizationEvent函数?
我在协议驱动程序中想创建一个有名事件,然后再在应用程序中OPEN这个
有名事件用以进行两者之间的通讯。 但在驱动程序中使用此函数创建一个有名事件返回值总是空,如下: PKEVENT m_pEvent; UNICODE_STRING m_EventString; HANDLE m_EventHandle; RtlInitUnicodeString(&m_EventString,L"GLOBAL_EVENT_NAME"); m_pEvent = IoCreateSynchronizationEvent( &m_EventString,&m_EventHandle); DebugPrint(("m_pEvent is %ld\n",m_pEvent)); 然后再dbgview中看到 m_pEvent is 0 请问怎样使用IoCreateSynchronizationEvent才是正确的 |
|
|
沙发#
发布于:2004-03-04 20:30
这样试一试吧。
#define EVENT_NAME L"\\BaseNamedObjects\\MyEvent" PKEVENT pEvent=NULL; HANDLE hEvent; // // 生成一个内核事件对象 // RtlInitUnicodeString(&ustrEventName, EVENT_NAME); //init the event name pEvent=IoCreateNotificationEvent(&ustrEventName,&hEvent); //create a event object if(pEvent==NULL) { dprintf("Create Evennt Error!!!\n"); DrvUnload(DriverObject); } KeClearEvent(pEvent); //set the event to non-signaled |
|
板凳#
发布于:2004-03-05 10:00
楼上的兄弟,照此试验后,结果依然。
书上说在使用IoCreateNotificationEvent函数前需要将 KEVENT类型的项目分配存储, 是不是就是你写的“// 生成一个内核事件对象“, 即IoCreateDevice一个设备呢? 请解释一下“// 生成一个内核事件对象“的内容。 谢谢。 |
|
|