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公版驱动,请问如何解决这个问题,试线程挂起后可以继续执行,而不在这个函数假死。