阅读:1626回复:10
wdm可以用shell_postMessage么?
我想将驱动的中断事件传递给vc控件,可以用shell_postmessage么?
另外用线程+事件的方法是不是不行啊?wdm将中断传递到app是可以的。 这里有没有知道的,帮兄弟一把吧。 |
|
沙发#
发布于:2002-11-27 13:49
那是vxd的,不行。
|
|
板凳#
发布于:2002-11-27 13:58
用事件吧。
|
|
地板#
发布于:2002-11-28 13:21
大致应该是这样:app传一个事件的句柄下来,用WaitForSingleObject等待,driver里IoCompleteRequest就会把事件变成有信号的
|
|
|
地下室#
发布于:2002-11-28 16:20
大致应该是这样:app传一个事件的句柄下来,用WaitForSingleObject等待,driver里IoCompleteRequest就会把事件变成有信号的 driver里面是m_pEventToSignal->Set();吧? |
|
5楼#
发布于:2002-11-28 20:36
试试deviceiocontrol().
|
|
6楼#
发布于:2002-11-29 09:08
大致应该是这样:app传一个事件的句柄下来,用WaitForSingleObject等待,driver里IoCompleteRequest就会把事件变成有信号的 乱说。 在kernel,用函数kesetevent设置事件。IoCompleteRequest是完成IRP用的。 :mad: |
|
7楼#
发布于:2002-11-29 09:09
你这应该是driverwork封装的吧,实际还是用的DDK的函数的。 |
|
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设置也可以,但是结果就没法传回去了。 |
|
|
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] 不说清楚。。。 |
|
10楼#
发布于:2002-12-02 10:00
:P Sorry...
|
|
|