From 7744ad753f86da9f93d151d3280aacd666c789ef Mon Sep 17 00:00:00 2001 From: Wei Mao Date: Mon, 29 Jan 2018 09:05:30 -0800 Subject: general/toaster/toastmon: purge iotarget wdftoastmon: AV_VRF_Wdf01000!FxRequestBase::Vf_VerifyDispose The previous fix to Stop the IoTarget on D0Exit does not solve the problem. In stopped state, the IoTarget still receives incoming request and puts them in a pending list. On device removal, those requests trigger VerifyDispose break. With Purge, The IoTarget "in" gate is closed and won't accept any more incoming request. Besides, any existing requests in pending list are completed as well. --- general/toaster/toastDrv/kmdf/toastmon/toastmon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/general/toaster/toastDrv/kmdf/toastmon/toastmon.c b/general/toaster/toastDrv/kmdf/toastmon/toastmon.c index c011c73e..44f6f5d2 100644 --- a/general/toaster/toastDrv/kmdf/toastmon/toastmon.c +++ b/general/toaster/toastDrv/kmdf/toastmon/toastmon.c @@ -384,7 +384,7 @@ Routine Description: for (i = 0; i < count; i ++) { ioTarget = WdfCollectionGetItem(deviceExtension->TargetDeviceCollection, i); - WdfIoTargetStop(ioTarget, WdfIoTargetWaitForSentIoToComplete); + WdfIoTargetPurge(ioTarget, WdfIoTargetPurgeIoAndWait); targetDeviceInfo = GetTargetDeviceInfo(ioTarget); WdfTimerStop(targetDeviceInfo->TimerForPostingRequests, TRUE); -- cgit v1.3.1