From f2b18a570669f097c4cd8d2786c47df9ee49e2f0 Mon Sep 17 00:00:00 2001 From: Dmitry Fleytman Date: Sat, 26 Apr 2014 23:10:29 +0300 Subject: [PATCH] UsbDk: Make WdfRequest detach return original object This change slightly simplifies CWdfRequest class usage Signed-off-by: Dmitry Fleytman --- UsbDk/RedirectorStrategy.cpp | 3 +-- UsbDk/WdfRequest.h | 8 ++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/UsbDk/RedirectorStrategy.cpp b/UsbDk/RedirectorStrategy.cpp index 918eba6..ed1946a 100644 --- a/UsbDk/RedirectorStrategy.cpp +++ b/UsbDk/RedirectorStrategy.cpp @@ -208,8 +208,7 @@ void CUsbDkRedirectorStrategy::IoInCallerContext(WDFDEVICE Device, WDFREQUEST Re if (NT_SUCCESS(status)) { - WdfRequest.Detach(); - CUsbDkFilterStrategy::IoInCallerContext(Device, Request); + CUsbDkFilterStrategy::IoInCallerContext(Device, WdfRequest.Detach()); } } //-------------------------------------------------------------------------------------------------- diff --git a/UsbDk/WdfRequest.h b/UsbDk/WdfRequest.h index 73921f7..ea15f66 100644 --- a/UsbDk/WdfRequest.h +++ b/UsbDk/WdfRequest.h @@ -94,8 +94,12 @@ public: NTSTATUS SendAndForget(WDFIOTARGET Target); NTSTATUS SendWithCompletion(WDFIOTARGET Target, PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionFunc); - void Detach() - { m_Request = WDF_NO_HANDLE; } + WDFREQUEST Detach() + { + WDFREQUEST Request = m_Request; + m_Request = WDF_NO_HANDLE; + return Request; + } operator WDFREQUEST() const { return m_Request; }