UsbDk: Introduce WDF request forwarding logic
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
This commit is contained in:
parent
31d1737fbe
commit
4566ccdac0
2 changed files with 30 additions and 2 deletions
|
|
@ -1,6 +1,26 @@
|
|||
#include <ntddk.h>
|
||||
#include "WdfRequest.h"
|
||||
|
||||
NTSTATUS CWdfRequest::SendAndForget(WDFIOTARGET Target)
|
||||
{
|
||||
WDF_REQUEST_SEND_OPTIONS options;
|
||||
WDF_REQUEST_SEND_OPTIONS_INIT(&options, WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET);
|
||||
|
||||
NTSTATUS status = STATUS_SUCCESS;
|
||||
|
||||
if (WdfRequestSend(m_Request, Target, &options))
|
||||
{
|
||||
Forget();
|
||||
}
|
||||
else
|
||||
{
|
||||
status = WdfRequestGetStatus(m_Request);
|
||||
SetStatus(status);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
NTSTATUS CWdfRequest::FetchSafeReadBuffer(WDFMEMORY *Buffer) const
|
||||
{
|
||||
PVOID Ptr;
|
||||
|
|
|
|||
|
|
@ -10,8 +10,11 @@ public:
|
|||
{}
|
||||
~CWdfRequest()
|
||||
{
|
||||
WdfRequestSetInformation(m_Request, m_Information);
|
||||
WdfRequestComplete(m_Request, m_Status);
|
||||
if (m_Request != WDF_NO_HANDLE)
|
||||
{
|
||||
WdfRequestSetInformation(m_Request, m_Information);
|
||||
WdfRequestComplete(m_Request, m_Status);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename TObject>
|
||||
|
|
@ -59,10 +62,15 @@ public:
|
|||
WdfRequestGetParameters(m_Request, &Params);
|
||||
}
|
||||
|
||||
NTSTATUS SendAndForget(WDFIOTARGET Target);
|
||||
|
||||
protected:
|
||||
WDFREQUEST m_Request;
|
||||
|
||||
private:
|
||||
void Forget()
|
||||
{ m_Request = WDF_NO_HANDLE; }
|
||||
|
||||
NTSTATUS m_Status = STATUS_UNSUCCESSFUL;
|
||||
ULONG_PTR m_Information = 0;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue