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的时候快点返回,驱动自己延时然后处理相关事件。而不是在处理完相关事件后才返回。不知道这样可行不?
SetTimer函数只能在窗口消息处理过程中使用。你可以用线程。