0

谁能列出在 wdf 中使用以下两种方法取消 IO 的优缺点?1) 使用 WdfRequestMarkCancelable() 将请求标记为可取消。提供取消例程并同步完成路径。2) 在处理 IRP 时继续使用 WdfRequestIsCanceled() 进行轮询。根据返回值完成。

我知道 WdfRequestIsCanceled() 是一种轮询方法,而 WdfRequestMarkCancelable () 是异步的。但是 WdfRequestMarkCancelable() 是否值得为同步完成/取消路径付出额外的努力?

感谢您的投入。

4

1 回答 1

3

WdfRequestIsCanceled() 仅在您碰巧正在处理请求时才有用。而且,在 Windows 驱动程序中,您往往需要非常异步地构建事物,因此您通常不会“碰巧”处理请求。

您实际上应该问自己一个不同的问题:我是要使用 WdfRequestMarkCancelable 还是要在您进行相关工作时将请求放回“手动”队列中。将其放入手动队列将使其可取消。如果你需要在它被取消时做任何事情,你可以在手动队列本身上放置一个取消回调。

每种方法都有优点和缺点。我个人更喜欢使用 WdfRequestMarkCancelable 直接处理取消。大多数其他人更喜欢将请求放入手动队列中。

于 2012-10-09T06:25:00.020 回答