DeviceIOControl线程假死

极致码神 2013-10-12 10:42:10
大侠,你们好,小弟在DeviceIOControl这个地方遇到点问题。
我在线程中调用DeviceIOControl函数来发送USB数据,USB芯片为68013A,用的公版驱动,当线程不挂起时,线程运行正确,可是当我挂起线程后,再恢复线程时,会出现卡在DeviceIOControl这个函数处,造成线程假死。
while(!ThreadParam->bExit && !gStopWrite)
{
outBulkControl.pipeNum = OutPipeNum;
outThreadControl.hDevice = hOutDevice;
outThreadControl.Ioctl = IOCTL_EZUSB_BULK_WRITE;
outThreadControl.InBuffer = (PVOID)&outBulkControl;
outThreadControl.InBufferSize = sizeof(BULK_TRANSFER_CONTROL);
outThreadControl.OutBuffer = outBuffer;
outThreadControl.OutBufferSize = CurrentTransferSize;
outThreadControl.status = FALSE;
outThreadControl.completionEvent = WriteCompleteEvent;
outThreadControl.BytesReturned = 0;
outThreadControl.status = DeviceIoControl ( outThreadControl.hDevice,
outThreadControl.Ioctl,
outThreadControl.InBuffer,
outThreadControl.InBufferSize,
outThreadControl.OutBuffer,
outThreadControl.OutBufferSize,
&outThreadControl.BytesReturned,
(LPOVERLAPPED)&varHIDOverlapped); //线程挂起恢复后,卡在此处不往下执行。
我用的68013公版驱动,请问如何解决这个问题,试线程挂起后可以继续执行,而不在这个函数假死。
...全文
98 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
极致码神 2013-10-12
  • 打赏
  • 举报
回复
而且这个时候即便是把应用程序关了,应用程序的进程仍然会停留在任务管理器里,好像应用程序没有完全退出,我不知道为什么在发送的过程中发送数据会有问题,是我应用程序的问题还是EZ-USB公板驱动的问题。

4,164

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 一般软件使用
社区管理员
  • 一般软件使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧