阅读:986回复:4
我这么做行么?
我想在中断到来后从板卡上取得数据,然后存盘我用的kerneldriver做的。我是用共享事件做的
HEV=CreateEvent(产生了一个信号,然后用AMCC5920_GetEvent(hAMCC5920,HEV); void AMCC5920_GetEvent(AMCC5920_HANDLE hAMCC5920,HANDLE hEvent) { DeviceIoControl(hAMCC5920, IOCTL_AMCC5920_GET_EVENT,(PVOID)&hEvent, sizeof(HANDLE)); } 传送信号句柄给驱动程序。 在驱动程序中我的程序用 ObReferenceObjectByHandle 然后在中断处理程序中给信号置位:kesetevent(),我想着应该是中断来我就给信号置位,应用程序用WaitForSingleObject等待信号等到后,从板卡中取数据存文件。然后下次中断来了,又给信号置位,就这样中断来一次,取一次数据。可是事实上好像不行,每次中断只能来一个,不知什么原因是不是这样做不行? 我想着用共享内存,这样是不是速度要快些呢? |
|
沙发#
发布于:2004-03-30 10:44
能给些具体的提示么,那我用在中断中读完数据,是不是还得用共享事件的方法通知应用程序,要不然我的应用程序怎么知道什么时候读呢?
|
|
板凳#
发布于:2004-03-29 19:21
是共享内存么? 不建议使用共享内存,这对你的问题没有帮助,我的意思是建立缓冲区,中断时读出数据写入缓冲,应用程序发READ请求来的时候从缓冲里吧数据送上去(有多数实现方式,比如你可以考虑使用环形队列做为缓冲) |
|
|
地板#
发布于:2004-03-29 14:32
是共享内存么?
用那种共享内存方法比较好呢? |
|
地下室#
发布于:2004-03-27 02:37
本来应该是可以的,可是我怀疑你的中断来得太快
另外,如果你用这种方式,最好使用AutoResetEvent,这样丢中断的机会比较少,但我认为还是会丢的,所以我想你还是应该在驱动程序中建立缓冲区。 |
|
|