编写设备驱动程序

接收异步设备事件通知

通过 LDI,内核设备使用方可以注册事件通知以及接收来自目标设备的事件通知。内核设备使用方可以注册发生事件时将会调用的事件处理程序。内核设备使用方必须先打开设备并接收分层驱动程序句柄,然后才能通过 LDI 事件通知接口注册事件通知。

通过 LDI 事件通知接口,内核设备使用方可以指定事件名称以及检索关联的内核事件 cookie。然后,内核设备使用方可以将分层驱动程序句柄 (ldi_handle_t)、cookie (ddi_eventcookie_t) 及事件处理程序传递到 ldi_add_event_handler(9F) 以注册事件通知。成功完成注册后,内核设备使用方会收到一个唯一的 LDI 事件处理程序标识符 (ldi_callback_id_t)。LDI 事件处理程序标识符属于不透明类型,只能用于 LDI 事件通知接口。

LDI 提供了一个框架,以用于注册其他设备生成的事件。LDI 本身并不定义任何事件类型,也不提供用于生成事件的接口。

下面介绍了 LDI 异步事件通知接口:

ldi_callback_id_t

事件处理程序标识符。属于不透明类型。

ldi_get_eventcookie(9F)

检索由分层驱动程序句柄指定的目标设备的事件服务 cookie。

ldi_add_event_handler(9F)

添加由 ldi_callback_id_t 注册标识符指定的回调处理程序。发生由 ddi_eventcookie_t cookie 指定的事件时,将会调用该回调处理程序。

ldi_remove_event_handler(9F)

删除由 ldi_callback_id_t 注册标识符指定的回调处理程序。