dingwws
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分-6分
  • 威望101点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:3595回复:2

求助(DriverWorks中的KEvent用法)

楼主#
更多 发布于:2001-05-23 08:49
DriverWorks中的KEvent用法。
作用。

最新喜欢:

mapoflmapofl
BlueButterfly
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2005-09-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-06-08 16:39
其实很简单的。你想知道什么呢?先贴个我自己实现的例子。

KEvent * m_pMicrosecondEvent;

switch(I.IoctlCode())

case IVRDRIVER_IOCTL_HookMicrosecondEvent:
{
   HANDLE hMSecondEvent = *(HANDLE *)I.IoctlBuffer();
   if(hMSecondEvent == NULL)
   {
       t << "Handle is null\n";
       I.Information() = 0;
       status = STATUS_INSUFFICIENT_RESOURCES;
       break;
   }
   if(m_pMicrosecondEvent != NULL)
   {
delete m_pMicrosecondEvent;
m_pMicrosecondEvent = NULL;
   }
   m_pMicrosecondEvent =
       new (NonPagedPool)  KEvent (hMSecondEvent,
                 OBJECT_TYPE_ALL_ACCESS);

   if(m_pMicrosecondEvent != NULL)
   {
I.Information() = sizeof(UCHAR);
*(UCHAR *)I.IoctlBuffer() = 1;
status = STATUS_SUCCESS;
t << "Succed in connect OneSecond event\n";
    }
    else
    {
I.Information() = sizeof(UCHAR);
*(UCHAR *)I.IoctlBuffer() = 0;
           status = STATUS_SUCCESS;
    }
}
break;

m_pMicrosecondEvent->Pulse();//手动
m_pMicrosecondEvent->Set();//自动

应用层调用
HANDLE MicrosecondEvent = CreateEvent(NULL,FALSE,FALSE,NULL);//自动
HANDLE MicrosecondEvent = CreateEvent(NULL,TRUE,FALSE,NULL);//手动

DeviceIoControl(m_hDevice,
IVRDRIVER_IOCTL_HookMicrosecondEvent,
&MicrosecondEvent,
sizeof(MicrosecondEvent),
&returnvalue,
sizeof(UCHAR),
&nOutput,
NULL)

wujbclzw
驱动牛犊
驱动牛犊
  • 注册日期2008-03-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分200分
  • 威望128点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-09-02 16:48
我也是这样做的
为何 总是死机呢
游客

返回顶部