分类: WINDOWS
2010-07-18 22:38:02
USB设备驱动程序主要和USBD打交道,所以我们必须详细的了解USBD提供的函数。
USB系统软件由两层组成:
1.较高的USB Client设备驱动程序
2.较低的由Windows CE实现的USB函数层(第二层由较高的通用串行总线驱动程序USBD模块和较低的控制器驱动程序HCD模块组成。)
HCD模块给USBD模块提供最底层的支持,USBD实现高层的USBD接口函数。USB设备驱动程序使用USBD提供的接口函数和外围设备进行通讯。
WINCE USB系统结构:USB设备驱动程序-》USBD-》HCD-》USB控制器硬件
编写USB设备驱动程序方法:
1.USB设备驱动程序使用USBD模块提供的函数操作USB设备。
2.使用流接口函数
3.使用现有的Windows CE应用程序编程接口(API)
USBD的实现在WINCEROOT\public\common\oak\drivers\usb\USBD 文件夹下有源代码:
USBD的传输函数:10
AbortTransfer :中断传输
CloseTransfer : 关闭传输
GetIsochResults :获取同步传输结果
GetTransferStatus:得到当前的传说状态
IssuBulkTransfer :在特定的端口上初始化块传输
IssueControlTransfer:在特定的端口上初始化控制传输
IssueInterruptTransfer:在特定的端口上初始化中断传输
IssueIsochTransfer:在特定的端口上初始化同步传输
IsTransferComplete :传输结束?
IssueVendorTransfer :在特定的端口上初始化厂商自定义传输
USBD和USB设备建立通讯管道的函数:7
AbortPipeTransfer
ClosePipe
IsDefaultPipeHalted
IsPipeHalted
OpenPipe
ResetDefaultPipe
ResetPipe
USB针对在总线上的数据打包函数:5
GetFrameLength
GetFrameNumber
ReleaseFrameLengthControl
SetFrameLength
TakeFrameLengthControl
取得设置设备配置函数: 8
ClearFeature ??
SetDescriptor
GetDescriptor??
SetFeature
GetInterface??
SetInterface
GetStatus????
SyncFrame
与USB进行交互的实现方法相关的多任务函数:10
FindInterface?????????
RegisterClientDeviceId
GetDeviceInfo?????????
RegisterClientSettings
GetUSBDVersion ????????
RegisterNotificationRoutine
LoadGenericInterfaceDriver
TranslateStringDescr
OpenClientRegisterKey??
UnRegisterNotificationRoutine