USB 系统设备驱动程序编程接口
USB 协议驱动程序(USBD)支持标准 UNIX I/O 函数,如open( )、close( )和ioctl( )。它不支持read( )、write( )或poll( ) 函数。
除了标准 UNIX 接口外,该驱动程序还通过使用调用向量来提供直接接口。 USB 客户机驱动程序使用这些呼叫向量来与 USBD 进行交互。 调用向量是通过使用以下宏启动的:
| 宏 | 描述 |
|---|---|
| usbdCloseDevice | 客户机驱动程序调用此功能以关闭打开的 USB 逻辑设备。 |
| usbdResetDevice | 客户机驱动程序调用此功能以重置打开的 USB 逻辑设备。 |
| usbdPipeConnect | 在对管道启动 I/O 之前,客户机驱动程序会调用此函数来分配和初始化管道的资源。 |
| usbdPipeDisconnect | 客户机驱动程序将调用此函数来关闭设备。 |
| usbdPipeIO | 客户机驱动程序在执行 I/O 操作时调用此函数。 此功能也由 USB 系统驱动程序在枚举,拓扑发现和设备配置期间在内部调用。 |
| usbdPipeIOWait | 当调用程序等待未完成的 I/O 时,客户机驱动程序和 USB 系统驱动程序调用此功能。 |
| usbdPipeStatus | 客户机驱动程序会调用此函数以获取管道的状态。 管道的状态可能是管道已停止或管道处于活动状态。 |
| usbdPipeAbort | 客户机驱动程序调用此函数以停止一些先前启动的 I/O。 如果从中断环境中调用,那么会向 配置过程 函数发送请求以停止特定 I/O ,然后立即将控制返回给调用者。 |
| usbdPipeClear | 客户机驱动程序调用此功能以从主机透视图激活先前已停止的管道。 只有在发出 CLEAR FEATURE 命令以从设备的角度清除端点停止后,才能启动此服务。 |
| usbdMapMemory | 客户机驱动程序使用此功能来映射主机内存,以便主机控制器可以使用总线主控 DMA 对内存进行读写操作。 必须指定 USBDMAP_USER 标志,以指示要映射的内存是否位于用户地址空间中。 |
| usbdUnmapMemory | 客户机驱动程序使用此功能来取消映射先前映射的内存。 在调用此函数之前,必须完成所有引用该内存块的 I/O。 只能从流程环境中调用此函数。 |
| usbdGetDescriptors | 客户机驱动程序使用此功能从设备中读取描述符的列表。 返回一个指向包含描述符列表的缓冲区的指针。 |
| usbdGetDevselector | 重新连接后,在断开连接之前,设备的 赫杰夫诺 和 地址 值可能会更改为先前的值。 当使用两个或两个以上具有相同 类, 子类, 协议和 开发类型 值的 USB 逻辑设备时,可能会发生这种情况。 可能仅从流程环境调用此函数。 |
| usbdGetFrame | 此函数由客户机驱动程序调用,以从设备连接到的主机控制器获取当前帧号。 此函数只用于同步管道。 |
| usbdSetInterface | 当将接口更改为备用设置时,客户机驱动程序将调用此函数。 |