如何编写Windows CE.net的usb驱动程序(2)
Mouse=(CMouse*)lpvNotifyParameter;
return(pMouse->MouseTransferComplete());
}
//数据传输完毕回调函数
DWORDCMouse::MouseTransferComplete()
{
if(m_hEvent)
SetEvent(m_hEvent);
return0;
}
ULONGCALLBACKCMouse::MouseThreadStub(PVOIDcontext)
{
CMouse*pMouse=(CMouse*)context;
return(pMouse->MouseThread());
}
//USB鼠标线程
DWORDCMouse::MouseThread()
{
DEBUGMSG(ZONE_INIT,(TEXT(USBMouse:Workerthreadstartedrn)));
SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST);
if(SubmitInterrupt())
{
while(!m_fClosing)
{
WaitForSingleObject(m_hEvent,INFINITE);
if(m_fClosing)
break;
if((*m_lpUsbFuncs->lpIsTransferComplete)(m_hInterruptTransfer))
{
if(!HandleInterrupt())
break;
}
else
{
RETAILMSG(1,(TEXT(!USBMouse:Eventsignalled,buttransfernotcompletern)));
//Theonlytimethisshouldhappenisifwegetanerroronthetransfer
ASSERT(m_fClosing||(m_hInterruptTransfer==NULL));
break;
}
}
}
RETAILMSG(1,(TEXT(USBMouse:Workerthreadexitingrn)));
return(0);
}
看到了没有,其实USB的驱动程序编写就这么简单,类似的其他设备,例如打印机设备,就有BulkOUTPIPE,需要Bulk传输,那就需要了解一下IssueBulkTransfer()的应用。当然如果是开发USBMassStorageDisk的驱动,那就需要了解更多的协议,例如Bulk-OnlyTransport协议等。
微软的WindowsCE.NET的PlatformBuild中已经带有USBPrinter和USBMassStorageDisk的驱动的源代码了,好好研究一下,你一定回受益非浅的。
usb 驱动程序 CE net Windows 编写 如何 相关文章:
- Linux系统下USB摄像头驱动程序开发(04-25)
- 基于uClinux嵌入式系统的汽车黑匣子的设计(07-08)
- 基于WinCE操作系统的通用USB数控键盘设计(08-05)
- 基于WinCE的ARM视频监控系统(11-14)
- 基于LabVIEW的USB实时数据采集处理系统的实现(03-26)
- 基于DSP和USB的高速数据采集与处理系统设计(05-01)