ooyf
驱动牛犊
驱动牛犊
  • 注册日期2002-04-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:917回复:3

请教驱程事件问题

楼主#
更多 发布于:2004-07-27 10:33
有谁来搭救我这个菜鸟啊
我手上有一个串口驱程,但该驱程有数据到的时候无任何事件通知,我现在需要增加该功能,但我是一个菜鸟,刚刚接触驱程才几天时间,从网上知道该使用IoCreateNotificationEvent函数,但该函数该在什么地方调用,望指教!!!!

最新喜欢:

mapoflmapofl
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-27 14:27
PRKEVENT pRcvEvent;
InBuffer里的值就是你在应用层用CreateEvent生成的Event句柄
ooyf
驱动牛犊
驱动牛犊
  • 注册日期2002-04-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-27 11:40
很感谢bingjie,小弟先谢谢了
但我还有几个疑问,&GlobalData.pRcvEvent是否就是应用程序传下来的事件名称,对于( HANDLE )( *( PULONG )(&InBuffer[ 0 ]) 我还怎样去获取该值。
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-27 10:42
1。在应用程序里创建一个带有名称的Event,然后把这个Event的句柄通过DeviceIoControl传递到驱动里
2。在驱动里按以下办法获得内核Event对象(RKEvent)
Status = ObReferenceObjectByHandle( ( HANDLE )( *( PULONG )(&InBuffer[ 0 ]) ),
GENERIC_READ | GENERIC_WRITE, NULL, KernelMode, &GlobalData.pRcvEvent, NULL );
if( !NT_SUCCESS( Status ) )
{
TRACE1( "Reference RcvEvent failed: %x", Status );
GlobalData.pRcvEvent = NULL;
}
3.以后在应用程序里不断的Wait这个Event,
4.驱动里需要通知应用程序是调用KeSetEvent(...)来触发这个Event
游客

返回顶部