aldsd
驱动牛犊
驱动牛犊
  • 注册日期2004-02-26
  • 最后登录2005-05-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2054回复:2

怎样使用IoCreateSynchronizationEvent函数?

楼主#
更多 发布于:2004-03-04 17:32
我在协议驱动程序中想创建一个有名事件,然后再在应用程序中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才是正确的
aldsd
x_j_ting
驱动牛犊
驱动牛犊
  • 注册日期2003-03-30
  • 最后登录2005-06-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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
aldsd
驱动牛犊
驱动牛犊
  • 注册日期2004-02-26
  • 最后登录2005-05-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-05 10:00
楼上的兄弟,照此试验后,结果依然。
书上说在使用IoCreateNotificationEvent函数前需要将
KEVENT类型的项目分配存储,
是不是就是你写的“// 生成一个内核事件对象“,
即IoCreateDevice一个设备呢?
请解释一下“// 生成一个内核事件对象“的内容。
谢谢。
aldsd
游客

返回顶部