请问各位大虾~
我目前遇到一个HID设备,需要PC端不停接收数据回来,达到一定大小丢给上层处理(就是只要有report过来就需要readfile),我怕阻塞,所以想用线程的方式来写,但总感觉用的不是很对的样子,所以想请高手指点一下,最好能结合代码说明一下: ReportEvent = CreateEvent(NULL, TRUE, FALSE, NULL); HidOverlapped.hEvent = ReportEvent;
HidOverlapped.Offset = 0;
HidOverlapped.OffsetHigh = 0;
bResult = ReadFile(handle,&lpBuffer, Capabilities.InputReportByteLength, &dwSize,
(LPOVERLAPPED) &HidOverlapped );
if (!bResult)
{
printf("ReadFile failed: %lX\n", (unsigned long)GetLastError());
}
bResult = WaitForSingleObject(ReportEvent, MT_INTERVAL);
我目前遇到一个HID设备,需要PC端不停接收数据回来,达到一定大小丢给上层处理(就是只要有report过来就需要readfile),我怕阻塞,所以想用线程的方式来写,但总感觉用的不是很对的样子,所以想请高手指点一下,最好能结合代码说明一下: ReportEvent = CreateEvent(NULL, TRUE, FALSE, NULL); HidOverlapped.hEvent = ReportEvent;
HidOverlapped.Offset = 0;
HidOverlapped.OffsetHigh = 0;
bResult = ReadFile(handle,&lpBuffer, Capabilities.InputReportByteLength, &dwSize,
(LPOVERLAPPED) &HidOverlapped );
if (!bResult)
{
printf("ReadFile failed: %lX\n", (unsigned long)GetLastError());
}
bResult = WaitForSingleObject(ReportEvent, MT_INTERVAL);
1.可不可以通过callback函数把数据块传上去?
2.如果这个callback函数是我创建readThread的函数的一个参数,类似下面这样,可以吗?或者说callback只能在xxxx里调用?
void xxxx(viod *cb)
{
...
CreateThread(readThread,this);
...
}
UINT readThread()
{
...
WaitForSingleObject(ReportEvent, MT_INTERVAL);
...
Data[i]=*(buffer+i);
cb;//调用Callback
}