微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 如何编写Windows CE.net的usb驱动程序(2)

如何编写Windows CE.net的usb驱动程序(2)

时间:05-02 来源:互联网 点击:

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的驱动的源代码了,好好研究一下,你一定回受益非浅的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top