当前位置:首页 > 行业动态 > 正文

ddk api是什么?它有哪些主要功能和应用场景?

“ddk api” 似乎指的是 “Ddk API”,但这个短语本身没有提供足够的信息来生成一个有意义的回答。如果您能提供更多背景信息或具体问题,我会很乐意帮助您。

1、USB DDK简介

ddk api是什么?它有哪些主要功能和应用场景?  第1张

USB(通用串行总线)是一种用于规范电脑与外部设备的连接和通讯的标准,包括主机端(Host)和设备端(Device)两部分,USB DDK(USB Driver Development Kit)是HDF驱动框架为开发者提供的一套USB驱动程序开发套件,旨在支持基于用户态的USB设备驱动开发,并提供了丰富的USB驱动开发能力。

2、USB Host DDK架构

USBInterface Pool:负责USB Interface管理,提供USB Interface申请和回收,记录USB接口信息及资源。

USB Protocol Layer:根据USB协议封装设备IO/控制命令,负责设备描述符的管理,构建对应的USB Interface并加入USB Interface Pool中管理。

Device IO Manager:管理USB IO请求,提供同步IO和异步IO管理机制,负责记录该请求并通过Raw API Library提供的接口依次处理待发送的IO请求。

Raw API Library:抽象了OS平台的能力,定义统一的OS能力接口,对外提供OS能力调用接口。

OS Adapter:封装与平台相关的操作,根据不同平台编译对应平台的封装接口实现。

PnP Notify:动态监测USB状态变化,当有新设备添加/移除时,变化设备信息,通过KHDF上报给PnP Notify模块完成加载/卸载第三方功能驱动的功能。

3、USB Device DDK架构

SDK IF:将USB设备按照设备、接口、管道进行逻辑划分,对配置管理、设备管理、IO管理进行封装,此模块还向开发者提供了设备创建、获取接口、接收Event事件、收发数据等设备测驱动开发的能力接口。

Configuration Manager:负责解析HCS文件描述的USB描述符信息,得到的USB描述符信息用于设备创建,同时模块还提供了自定义属性的读取、创建、删除、修改等操作。

Device Manager:根据配置模块解析的USB描述符,并根据USB描述符创建设备,同时模块还负责获取设备、删除设备、获取设备状态,获取设备上面接口信息。

IO Manager:负责数据的读写,包括Events事件、数据读写完成事件的接受,支持同步和异步模式数据读写。

Adapter IF:主要是对复合设备配置驱动及通用功能驱动设备节点操作进行封装,为上层提供统一的设备管理接口。

Adapter:由复合设备配置驱动及通用功能驱动提供。

4、USB DDK开发指导

USB Host的开发:主要完成协议封装、设备管理、驱动安装与卸载等,通过上文的介绍,开发者可通过USB DDK API和USB RAW API来实现主机端驱动。

USB Device DDK的开发:开发者可以基于USB Device DDK进行端口动态注册和去注册、动态实例化能力、用户态下的数据发送及接收、复合设备能力等开发。

5、USB DDK API接口介绍

结构体:如UsbControlRequestSetup、UsbDeviceDescriptor、UsbConfigDescriptor、UsbInterfaceDescriptor、UsbEndpointDescriptor、UsbDdkEndpointDescriptor、UsbDdkInterfaceDescriptor、UsbDdkInterface、UsbDdkConfigDescriptor、UsbRequestPipe、UsbDeviceMemMap等。

枚举:如UsbDdkErrCode,定义了各种错误码。

函数:如OH_Usb_Init、OH_Usb_Release、OH_Usb_GetDeviceDescriptor、OH_Usb_GetConfigDescriptor、OH_Usb_GetInterfaceDescriptor、OH_Usb_GetEndpointDescriptor、OH_Usb_SetInterface、OH_Usb_OpenPipe、OH_Usb_ClosePipe、OH_Usb_BulkTransfer、OH_Usb_InterruptTransfer、OH_Usb_ControlTransfer、OH_Usb_IsochronousTransfer等。

USB DDK为开发者提供了一套完整的USB驱动程序开发工具包,包括主机端和设备端的开发能力,以及一系列API接口供开发者使用,通过这些工具和接口,开发者可以更加高效地开发出满足需求的USB驱动程序。

0