编写设备驱动程序

请求特性和字段

所有请求的数据都以消息块的形式传递,这样,无论驱动程序是 STREAMS 驱动程序、字符驱动程序还是块驱动程序,都将统一地对数据进行处理。消息块类型 mblk_tmblk(9S) 手册页中进行了介绍。DDI 提供了多个用于处理消息块的例程。示例包括 allocb(9F)freemsg(9F)。要了解用于处理消息块的其他例程,请参见 allocb(9F) 和 freemsg(9F) 手册页的“另请参见”部分。此外,还可以参见《STREAMS Programming Guide》

所有传输类型中都包括以下请求字段。在每个字段名称中,xxxx 的可能值包括: ctrlbulkintrisoc

xxxx_client_private

此字段值是一个指针,适用于将与请求一起在客户机驱动程序中传递的内部数据。此指针不用于将数据传输到设备。 

xxxx_attributes

此字段值是一组传输属性。虽然此字段对所有请求结构通用,但对于每种传输类型,此字段的初始化稍有不同。有关更多信息,请参见相应的请求结构手册页。表 20–1 中列出了这些手册页。另请参见 usb_request_attributes(9S) 手册页。

xxxx_cb

此字段值是正常传输完成的回调函数。如果异步传输在没有错误的情况下完成,则会调用此函数。 

xxxx_exc_cb

此字段值是错误处理的回调函数。仅当异步传输完成且出现错误时,才会调用此函数。 

xxxx_completion_reason

此字段存放传输本身的完成状态。如果出现错误,此字段将显示出现错误的内容。有关更多信息,请参见 usb_completion_reason(9S) 手册页。此字段由 USBA 2.0 框架更新。

xxxx_cb_flags

此字段列出在调用回调处理程序之前 USBA 2.0 框架所采取的恢复操作。USB_CB_INTR_CONTEXT 标志指示回调是否在中断上下文中运行。有关更多信息,请参见 usb_callback_flags(9S) 手册页。此字段由 USBA 2.0 框架更新。

以下各节介绍针对四种不同传输类型的不同请求字段。其中介绍如何初始化这些结构字段,还介绍有关属性和参数的各种组合的限制。