59zwd一起做网站看板娘 wordpress

当前位置: 首页 > news >正文

59zwd一起做网站,看板娘 wordpress,网站解析后 问题,宁波平面设计公司下面介绍主机驱动程序开发的高级概念和任务。 如果你正在编写与 Microsoft 提供的 USB 主机控制器扩展驱动程序 (Ucx01000.sys) 通信的新主机控制器驱动程序#xff0c;则这部分内容适用于你。 下面是 Windows 中 USB 主机端驱动程序中显示的图表的修改版本。 此版本隐藏 USB…下面介绍主机驱动程序开发的高级概念和任务。 如果你正在编写与 Microsoft 提供的 USB 主机控制器扩展驱动程序 (Ucx01000.sys) 通信的新主机控制器驱动程序则这部分内容适用于你。 下面是 Windows 中 USB 主机端驱动程序中显示的图表的修改版本。 此版本隐藏 USB 客户端驱动程序层的详细信息这些详细信息与主控制器驱动程序开发无关 在上图中 USB 集线器驱动程序 (Usbhub3.sys) 是 KMDF 驱动程序。 集线器驱动程序负责管理 USB 集线器及其端口、枚举和创建物理设备对象 (PDO) USB 设备和可能连接到其下游端口的其他集线器。 USB 主机控制器扩展 (Ucx01000.sys) 是堆栈中上述集线器驱动程序的抽象层提供一种通用机制用于将请求排队到基础主机控制器驱动程序。 USB 主机控制器驱动程序 管理硬件。 Usbxhci.sys 是 Microsoft 提供的一个此类驱动程序它尤其面向符合 xHCI 规范的 USB 控制器硬件。 独立硬件开发人员可能需要编写自己的主机控制器驱动程序而不是使用收件箱 Usbxhci.sys。 例如对于 XHCI 硬件该硬件不完全符合规范因此无法使用 Usbxhci.sys 或非 XHCI 硬件例如 USB over TCP 连接。 UCX 和主机控制器驱动程序之间的双向通信通过使用 USB 主机控制器扩展 (UCX) 编程接口进行。 编译驱动程序时每个驱动程序静态链接到 Microsoft 提供的存根库中的入口点 (Ucx01000.lib) 。 下面是为主机控制器驱动程序加载的设备堆栈 UCX 对象和句柄  UCX 扩展了 WDF 对象功能以定义其自己的特定于 USB 的 UCX 对象。 UCX 使用这些对象将请求排队到任何基础主机控制器驱动程序。 重要的 API UcxControllerCreate UcxRootHubCreate UcxUsbDeviceCreate UCXCONTROLLER主机控制器对象 表示由主机控制器驱动程序创建的主机控制器。 驱动程序必须为每个主机控制器实例仅创建一个主机控制器对象。 通常通过调用 UcxControllerCreate 方法在 EvtDriverDeviceAdd 回调中创建。 当主机控制器驱动程序创建对象时驱动程序将注册由 UCX 调用的回调函数的实现。 驱动程序还应识别主机控制器连接的总线类型例如 ACPI 或 PCI。 驱动程序还通过使用传递给 UcxControllerCreate 调用的 UCX_CONTROLLER_CONFIG 结构来提供主机控制器设备信息。 若要处理 I/O 请求主机控制器驱动程序必须注册 GUID_DEVINTERFACE_USB_HOST_CONTROLLER 设备接口。 此驱动程序不需要实现此接口中定义的 IOCTL。 相反UCX 客户端通过调用 UcxIoDeviceControl 将在此接口上收到的 IOCTL 请求传递给 UCX。 下面是与主机控制器对象关联的回调函数这些函数由 UCX 调用。 这些函数必须由主机控制器驱动程序实现。 *EVT_UCX_CONTROLLER_USBDEVICE_ADD 当集线器驱动程序通过与根集线器和/或外部集线器的交互确定总线上有新设备时调用。 *EVT_UCX_CONTROLLER_QUERY_USB_CAPABILITY UCX 调用以收集有关 USB 主机控制器支持的各种功能的信息。 *EVT_UCX_CONTROLLER_RESET 由 UCX 调用以重置控制器硬件以响应检测到的错误。 *EVT_UCX_CONTROLLER_GET_CURRENT_FRAMENUMBER 用于从主机控制器中检索当前帧编号中心驱动程序使用它来计划时序传输。 UCXROOTHUB根集线器对象 获取和控制主机控制器的根端口的状态。 主机控制器驱动程序通常在创建主机控制器对象后调用 UcxRootHubCreate 方法在 EvtDriverDeviceAdd 回调中创建。 每个主机控制器实例只能有一个根集线器对象。 在 UcxRootHubCreate 调用中驱动程序注册其回调实现。 EVT_UCX_ROOTHUB_GET_INFO 返回根集线器的 USB 2.0 和 USB 3.0 端口的数目。 EVT_UCX_ROOTHUB_GET_20PORT_INFO 返回有关根中心的 USB 2.0 或 USB 3.0 端口 (*EVT_UCX_ROOTHUB_GET_30PORT_INFO) 的信息。 创建并初始化根集线器对象后集线器驱动程序通过发送中断和控制传输与根集线器端口交互。 UCX 通过调用主机控制器驱动程序实现的这些回调函数来帮助实现这些传输。 EVT_UCX_ROOTHUB_CONTROL_URB 处理 USB 集线器的功能控制请求。。 EVT_UCX_ROOTHUB_INTERRUPT_TX 处理有关已更改端口的信息的请求。 UCXUSBDEVICEUSB 设备对象 表示连接到总线的物理 USB 设备。 主机控制器驱动程序通常通过调用 UcxUsbDeviceCreate 方法在 EVT_UCX_CONTROLLER_USBDEVICE_ADD 回调中创建。 创建对象时主机控制器驱动程序使用 UcxUsbDeviceCreate 调用注册其回调函数的实现。 这些回调函数旨在使控制器和驱动程序了解 USB 设备的当前状态。 EVT_UCX_USBDEVICE_ENABLE 准备控制器以执行到设备的默认端点的传输。 EVT_UCX_USBDEVICE_DISABLE 释放与设备及其默认端点关联的控制器资源。 EVT_UCX_USBDEVICE_ADDRESS 将地址编程到控制器中并将 SET_ADDRESS 传输发送到设备使其进入寻址状态。 EVT_UCX_USBDEVICE_ENDPOINTS_CONFIGURE 将非默认端点编程到控制器中并/或释放其他非默认端点。 EVT_UCX_USBDEVICE_RESET 设备已重置的控制器通知在这种情况下驱动程序采取任何必要措施将控制器与 USB 设备同步。 EVT_UCX_USBDEVICE_UPDATE 通知控制器与设备相关的各种信息。 EVT_UCX_USBDEVICE_HUB_INFO 如果 UCXUSBDEVICE 句柄用于集线器设备则通知集线器属性。 EVT_UCX_USBDEVICE_ENDPOINT_ADD 通知驱动程序为设备创建端点。 默认端点的 EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD。 当挂起的 USB 3.0 设备上的接口发出唤醒信号时驱动程序应调用 UcxUsbDeviceRemoteWakeNotification 来通知 UCX。 创建对象后对象的生存期由 UCX 管理驱动程序不得删除该对象。 UCXENDPOINT端点对象 表示 USB 设备对象上的端点。 端点对象由主机控制器在 EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD 或 EVT_UCX_USBDEVICE_ENDPOINT_ADD 回调期间创建。 创建端点对象时驱动程序会注册其回调函数。 驱动程序还会为每个端点创建一个框架队列对象并通过调用 UcxEndpointSetWdfIoQueue 将该队列的 WDFQUEUE 传递给 UCX。 创建端点后对象及其关联的队列的生存期由 UCX 管理驱动程序不得删除这些对象本身。 端点对象实现多个回调函数使驱动程序能够协助 UCX 执行与端点相关的操作。 EVT_UCX_ENDPOINT_ABORT 中止与端点关联的队列。 EVT_UCX_ENDPOINT_OK_TO_CANCEL_TRANSFERS 通知控制器驱动程序它可以在端点上完成取消的传输。 EVT_UCX_ENDPOINT_PURGE 完成端点上所有未完成的 I/O 请求。 EVT_UCX_ENDPOINT_START 开始与端点关联的队列。 EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD 创建静态流。 EVT_UCX_ENDPOINT_RESET 通知驱动程序重置控制器的端点编程。 当主机控制器驱动程序在端点上收到 USB 3.0 无 Ping 响应错误时驱动程序必须调用 UcxEndpointNoPingResponseError。 该调用会导致 USB 设备对象接收 EVT_UCX_USBDEVICE_UPDATE。 有关详细信息请参阅 在主机控制器驱动程序中配置 USB 端点。 UCXSTREAMS流对象 代表通过单个端点连接设备的管道数量。 主机控制器驱动程序通过调用 UcxStaticStreamsCreate 在 EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD 回调中创建流对象。 在 UcxStaticStreamsCreate 调用期间主机控制器驱动程序注册其回调函数。 对于特定的端点对象驱动程序可以确定它是否已创建流对象并通过调用 UcxEndpointGetStaticStreamsReferenced 返回 UCXSTREAMS 句柄。 创建对象后驱动程序会为每个流创建一个框架队列对象并通过调用 UcxStaticStreamsSetStreamInfo 将 WDFQUEUE 句柄发送到 UCX。 流对象为主机控制器提供了多个回调函数以帮助 UCX 管理静态流。 EVT_UCX_ENDPOINT_STATIC_STREAMS_DISABLE 为端点的所有流发布控制器资源。 EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE 为此端点启用所有流的控制器硬件。 对象的生存期和关联的队列由 UCX 管理驱动程序不得删除这些对象。