Windows WDFREQUESTSCANCELED Vs WDFREQUESTMARK CANCELABLE

Windows WDFREQUESTSCANCELED Vs WDFREQUESTMARK CANCELABLE,windows,kernel,wdf,kmdf,irp,Windows,Kernel,Wdf,Kmdf,Irp,有人能列出在wdf中使用以下两种IO取消方法的优缺点吗? 1) 使用WdfRequestMarkCancelable()标记请求可取消。提供取消例程并同步完成路径。 2) 在处理IRP时,继续使用WDFrequesticscanceled()进行轮询。根据返回的值完成 我知道WdfRequestIsCanceled()是一种轮询方法,而WdfRequestMarkCancelable()是异步的。但是同步完成/取消路径所需的额外工作值得WdfRequestMarkCancelable()吗 感谢

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

我知道WdfRequestIsCanceled()是一种轮询方法,而WdfRequestMarkCancelable()是异步的。但是同步完成/取消路径所需的额外工作值得WdfRequestMarkCancelable()吗

感谢您的输入。

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

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

每种方法都有利弊。我个人更喜欢直接处理取消,WDFrequeuestMarkCancelable。大多数其他人更喜欢将请求放入手动队列。

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

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

每种方法都有利弊。我个人更喜欢直接处理取消,WDFrequeuestMarkCancelable。大多数其他人更喜欢将请求放入手动队列中