WinCE 流驱动中 SetTimer的回调函数未执行

zzy360   2007-9-9 11:17 楼主
WinCE 流驱动中需要延时一定时间,但是不想用Sleep,Sleep同时会延迟驱动的返回。

用SetTimer,输出显示SetTimer显然正确执行,但是,没有调用回调函数。
就是SetTimer的回调函数未执行。
相关代码如下:

void CALLBACK TimerProc(    HWND hwnd,
                        UINT uMsg,
                        UINT idEvent,
                        DWORD dwTime )
{
   RETAILMSG(1,(TEXT(":::Timer Proc().\r\n")));
   KillTimer(NULL,timerID);
   timerID=0;
}


DWORD SPL_Read(DWORD hOpenContext,LPVOID pBuffer,DWORD Count)
{
    RETAILMSG(1,(TEXT("Entering SPL_Read.\r\n")));
    if (timerID==0)
    {
         RETAILMSG(1,(TEXT("SetTimer().\r\n")));
        timerID= SetTimer(NULL,0,2000,(TIMERPROC)TimerProc);
        //Sleep(3000);

    }
       
     RETAILMSG(1,(TEXT("SPL_Read OK.\r\n")));       
    return 1;
       
}

请教各位!
不用Sleep的想法就是想应用程序调用READ的时候快点返回,驱动自己延时然后处理相关事件。而不是在处理完相关事件后才返回。不知道这样可行不?

回复评论 (1)

SetTimer函数只能在窗口消息处理过程中使用。你可以用线程。
点赞  2007-9-15 03:29
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复