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

wdm可以用shell_postMessage么?

楼主#
更多 发布于:2002-11-26 15:14
我想将驱动的中断事件传递给vc控件,可以用shell_postmessage么?

另外用线程+事件的方法是不是不行啊?wdm将中断传递到app是可以的。

这里有没有知道的,帮兄弟一把吧。
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-11-27 13:49
那是vxd的,不行。
QJE
QJE
驱动小牛
驱动小牛
  • 注册日期2001-08-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分470分
  • 威望49点
  • 贡献值0点
  • 好评度44点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-27 13:58
用事件吧。
h13
h13
驱动老牛
驱动老牛
  • 注册日期2002-07-10
  • 最后登录2008-10-24
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-28 13:21
大致应该是这样:app传一个事件的句柄下来,用WaitForSingleObject等待,driver里IoCompleteRequest就会把事件变成有信号的
<table> [color=#8040FF]神,常虚以凝而灵明湛定 气,常静以养而充盈流通[/color] </table>
arethusa
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-28 16:20
大致应该是这样:app传一个事件的句柄下来,用WaitForSingleObject等待,driver里IoCompleteRequest就会把事件变成有信号的


driver里面是m_pEventToSignal->Set();吧?
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-28 20:36
试试deviceiocontrol().
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-11-29 09:08
大致应该是这样:app传一个事件的句柄下来,用WaitForSingleObject等待,driver里IoCompleteRequest就会把事件变成有信号的

乱说。
在kernel,用函数kesetevent设置事件。IoCompleteRequest是完成IRP用的。 :mad:
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2002-11-29 09:09

driver里面是m_pEventToSignal->Set();吧?

你这应该是driverwork封装的吧,实际还是用的DDK的函数的。
h13
h13
驱动老牛
驱动老牛
  • 注册日期2002-07-10
  • 最后登录2008-10-24
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-29 14:14
大致应该是这样:app传一个事件的句柄下来,用WaitForSingleObject等待,driver里IoCompleteRequest就会把事件变成有信号的


这是可行的,在deviceiocontrol的overlapped结构中传递event句柄:
HANDLE FileIOWaiter = CreateEvent( NULL, TRUE, FALSE, NULL);
if( FileIOWaiter==NULL)
    return GetLastError();
OVERLAPPED lap;
lap.Offset = 0;
lap.OffsetHigh = 0;
lap.hEvent = FileIOWaiter;

DeviceIoControl(...,&lap /*是最后一个参数,一般传NULL,这里把overlapped传下去)

用waitforsingleobject等待
用GetOverlappedResult得到结果

这时驱动里IoCompleteRequest,传下来的overlapped的事件就会signal

这样的优点是还可以传递结果,当然用楼上兄弟的传递event句柄下来再用kesetevent设置也可以,但是结果就没法传回去了。

<table> [color=#8040FF]神,常虚以凝而灵明湛定 气,常静以养而充盈流通[/color] </table>
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2002-12-01 22:59
[quote]大致应该是这样:app传一个事件的句柄下来,用WaitForSingleObject等待,driver里IoCompleteRequest就会把事件变成有信号的


这是可行的,在deviceiocontrol的overlapped结构中传递event句柄:
HANDLE FileIOWaiter = CreateEvent( NULL, TRUE, FALSE, NULL);
if( FileIOWaiter==NULL)
    return GetLastError();
OVERLAPPED lap;
lap.Offset = 0;
lap.OffsetHigh = 0;
lap.hEvent = FileIOWaiter;

DeviceIoControl(...,&lap /*是最后一个参数,一般传NULL,这里把overlapped传下去)

用waitforsingleobject等待
用GetOverlappedResult得到结果

这时驱动里IoCompleteRequest,传下来的overlapped的事件就会signal

这样的优点是还可以传递结果,当然用楼上兄弟的传递event句柄下来再用kesetevent设置也可以,但是结果就没法传回去了。

 [/quote]
不说清楚。。。
h13
h13
驱动老牛
驱动老牛
  • 注册日期2002-07-10
  • 最后登录2008-10-24
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-12-02 10:00
 :P Sorry...
<table> [color=#8040FF]神,常虚以凝而灵明湛定 气,常静以养而充盈流通[/color] </table>
游客

返回顶部