谁帮我看看这几个问题,十万火急啊

我现在在设计一个QNX上的USB驱动程序,看了DDK给的usb mouse,keyboard,print程序后,对USB整体设计有了了解。但是还有有以下几个问题很困惑,谁帮忙给解答啊
1.这三个程序中都有XXX_io_unblock(),这个函数是上层APP调用还是ResourceManager自己用,如果是上层APP用的话,上层的接口是什么?
2.驱动程序有明显的状态迁移吗?
3.当APP调用read时,下层buffer为空,这时XXX_io_read陷入阻塞,然后APP想要close设备,这样在close里面需要解除XXX_io_read的阻塞让其结束吗?如果不需要的话,XXX_io_read不是变成垃圾了吗?如果需要,为什么在例子中没有这样的处理?

急啊!谁给解答下,谢谢

xxx_io_unblock()有点奇怪。当上层APP阻塞在你的Resource Manager上,(比如read),然后APP又突然希望解除阻塞(比如有人按了ctrl-c),这时候你的io_unblock()就会被调用到,让你有机会做些处理。可以看看这个帖子里的讨论。
http://www.openqnx.com/chinese/viewtopic.php?t=2087

我不太清楚usb驱动有没有状态迁移。不过如果有的话,可以扩展并记录在ocb里面。

xxx_io_close()中应该返回一个EBADF给仍阻塞的APP,来放他们走。

太感谢xtang了,这几个问题困扰了很久,终于得到解决了