From 39144b74ef2c8c9fe8b1dfcec765cb82c1f89301 Mon Sep 17 00:00:00 2001 From: Dmitry Fleytman Date: Tue, 17 Nov 2015 11:49:57 +0200 Subject: [PATCH] WdfRequest: Handle buffer-less requests properly Signed-off-by: Dmitry Fleytman --- UsbDk/WdfRequest.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/UsbDk/WdfRequest.cpp b/UsbDk/WdfRequest.cpp index 3aa82cf..8b2a31f 100644 --- a/UsbDk/WdfRequest.cpp +++ b/UsbDk/WdfRequest.cpp @@ -81,6 +81,12 @@ NTSTATUS CWdfRequest::SendWithCompletion(WDFIOTARGET Target, PFN_WDF_REQUEST_COM NTSTATUS CWdfRequest::LockUserBufferForRead(PVOID Ptr, size_t Length, WDFMEMORY &Buffer) const { + if (Length == 0) + { + Buffer = WDF_NO_HANDLE; + return STATUS_SUCCESS; + } + auto status = WdfRequestProbeAndLockUserBufferForRead(m_Request, Ptr, Length, &Buffer); if (!NT_SUCCESS(status)) @@ -95,6 +101,12 @@ NTSTATUS CWdfRequest::LockUserBufferForRead(PVOID Ptr, size_t Length, WDFMEMORY NTSTATUS CWdfRequest::LockUserBufferForWrite(PVOID Ptr, size_t Length, WDFMEMORY &Buffer) const { + if (Length == 0) + { + Buffer = WDF_NO_HANDLE; + return STATUS_SUCCESS; + } + auto status = WdfRequestProbeAndLockUserBufferForWrite(m_Request, Ptr, Length, &Buffer); if (!NT_SUCCESS(status))