阅读:1574回复:1
异步IOCTL??????????????????????
在Walter Oney书的第九章中讲到了关于I/O控制操作
我对他讲的“异步IOCTL”理解不清楚。 请教高手。 还有他的相关的例子中的代码 关于 1异步句柄。(CreateFile) 2异步IOCTL 3异步IRP 的概念??????????????????????????????? |
|
最新喜欢:linwn |
沙发#
发布于:2001-09-29 22:41
调用CreateFile时, 加上FILE_FLAG_OVERLAPPED参数. 这时, 得到的HANDLE可以进行异步操作.
当调用DEVICEIOCONTROL时,在最后一个参数传入OVERLAPPED结果. 该DEVICEIOCONTROL就可以是个异步IOCONTROL. 是否真的异步, 取决于DRIVER是否立刻将此IOCONTROL处理调. 异步IRP和同步IRP的区别在于, 当一个异步IRP返回STATUS_PENDING时, IO MANAGER会返回到CALLER. 而一个同步IRP返回STATUS_PENDING时, IO MANAGER会执行等待操作. 等待DRIVER调用IoCompleteRequest. 但是通常情况下在同步IRP下返回STATUS_PENDING并不是个好主意. 尤其在FSD开发中可能会导致不能预料的后果. 所以, 尽量直接完成IRP, 或者自己WAIT到操作完成后返回IO MANAGER为妙. |
|
|