7#include "FxUsbPipe.tmh"
34 m_NumReaders(NumReaders),
68 reader[
i].Request->DeleteObject();
72#if (FX_CORE_MODE == FX_CORE_USER_MODE)
73 reader[
i].ReadCompletedEvent.Uninitialize();
74 reader[
i].m_ReadWorkItem.Free();
105 "WDFUSBPIPE %p continuous reader queueing work item to recover "
114 "Could not Queue workitem");
123 if (
FALSE == queued) {
126 "WDFUSBPIPE %p continuous reader not queueing work item,"
127 "WorkItemQueued = %d, target state %!WDF_IO_TARGET_STATE!",
172 "WDFUSBPIPE %p is being reset, continuous reader %p FxRequest %p"
173 " PIRP %p is deferred for later.",
175 Repeater->RequestIrp);
191 Repeater->ReadCompletedEvent.Clear();
206 status = Repeater->Request->GetFxIrp()->GetStatus();
214 Repeater->Request->GetFxIrp()->SetStatus(
status);
218 "WDFUSBPIPE %p continuous reader, format failed, %!STATUS!, "
234 "WDFUSBPIPE %p continuous reader, buffer alloc failed, but "
235 "there are %d readers left out of a max of %d",
249 "WDFUSBPIPE %p continuous reader, buffer alloc failed, but not "
279 readCompletedEventSet =
FALSE;
291 m_CompletionParams.Parameters.Usb.Completion;
294 params->Parameters.PipeRead.Buffer,
295 params->Parameters.PipeRead.Length,
309 "WDFUSBPIPE %p continuous reader FxRequest %p PIRP %p returned with "
317 readCompletedEventSet =
TRUE;
335 "WDFUSBPIPE %p continuous reader %p FxRequest %p PIRP %p canceled",
354#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
377 "WDFUSBPIPE %p continuous reader %p FxRequest %p PIRP %p got"
378 " asynchronously canceled",
384 else if (
FALSE == readCompletedEventSet) {
414 failedStatus = FailedRepeater->Request->GetStatus();
420 context = FailedRepeater->Request->GetContext();
421 usbCompletionParams =
context->m_CompletionParams.Parameters.Usb.Completion;
437 if (usbCompletionParams) {
670FxUsbPipeContinuousReader::operator
new(
678 return FxPoolAllocate(
724 if (pContext !=
NULL ) {
774 Mx::MxEnterCriticalRegion();
779 m_Readers[
i].ReadCompletedEvent.GetSelfPointer(),
780 "waiting for continuous reader to finish, WDFUSBPIPE",
787 Mx::MxLeaveCriticalRegion();
826 __in USBD_HANDLE USBDHandle
865#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
993 __in USBD_HANDLE USBDHandle
1035 m_Urb->
Hdr.Length =
sizeof(*m_Urb);
1059#if (FX_CORE_MODE == FX_CORE_USER_MODE)
1241 "WDFUSBPIPE %p converting stop action %!WDF_IO_TARGET_SENT_IO_ACTION!"
1264 "WDFUSBPIPE %p is stopped from EvtUsbTargetPipeReadersFailed"
1319 "WDFUSBPIPE %p converting purge action %!WDF_IO_TARGET_PURGE_IO_ACTION!"
1327 PendedRequestListHead,
1328 SentRequestListHead,
1346 "WDFUSBPIPE %p is purged from EvtUsbTargetPipeReadersFailed"
1390 "WDFUSBPIPE %p was not stopped in EvtDeviceD0Exit callback",
1399 PendedRequestListHead,
1400 SentRequestListHead,
1426 "WDFUSBPIPE %p, waiting for continuous reader work item to complete",
1439 "WDFUSBPIPE %p, cancelling for continuous reader (max of %d)",
1453 "WDFUSBPIPE %p, waiting for all i/o to complete",
GetHandle());
1465 __in size_t TotalBufferLength
1479 "Continuous reader already initialized on WDFUSBPIPE %p %!STATUS!",
1485 numReaders =
Config->NumPendingReads;
1487 if (numReaders == 0) {
1497 if (pReader ==
NULL) {
1607 (TransferOffsets !=
NULL) ? TransferOffsets->BufferOffset
1617 "WDFUSBPIPE %p, WDFREQUEST %p, WDFMEMORY %p, %!STATUS!",
1655 "Failed to initialize FxSyncRequest");
1688 "WDFUSBPIPE %p, WDFREQUEST %p being submitted",
1689 Pipe,
request.m_TrueRequest->GetTraceObjectHandle());
1721 "Pipe %p, Request %p, setting target failed, "
1734 if (pContext ==
NULL) {
1738#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
1750 Request->EnableContextDisposeNotification();
1754 Request->SetContext(pContext);
1757#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
1770#elif (FX_CORE_MODE == FX_CORE_USER_MODE)
1794 "Pipe %p, Request %p, setting target failed, "
1806 if (pContext ==
NULL) {
1810#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
1822 Request->EnableContextDisposeNotification();
1826 Request->SetContext(pContext);
1829#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
1846#elif (FX_CORE_MODE == FX_CORE_USER_MODE)
1873 "Failed to initialize FxSyncRequest");
void restart(int argc, const char *argv[])
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
virtual _Must_inspect_result_ NTSTATUS GotoStartState(__in PLIST_ENTRY RequestListHead, __in BOOLEAN Lock=TRUE)
virtual VOID GotoStopState(__in WDF_IO_TARGET_SENT_IO_ACTION Action, __in PSINGLE_LIST_ENTRY SentRequestListHead, __out PBOOLEAN Wait, __in BOOLEAN LockSelf)
_Must_inspect_result_ NTSTATUS SubmitSync(__in FxRequestBase *Request, __in_opt PWDF_REQUEST_SEND_OPTIONS Options=NULL, __out_opt PULONG Action=NULL)
ULONG SubmitLocked(__in FxRequestBase *Request, __in_opt PWDF_REQUEST_SEND_OPTIONS Options, __in ULONG Flags)
LIST_ENTRY m_SentIoListHead
_Must_inspect_result_ NTSTATUS SubmitSyncRequestIgnoreTargetState(__in FxRequestBase *Request, __in_opt PWDF_REQUEST_SEND_OPTIONS RequestOptions)
MdDeviceObject m_TargetDevice
virtual BOOLEAN Dispose(VOID)
WDF_IO_TARGET_STATE m_State
virtual VOID GotoPurgeState(__in WDF_IO_TARGET_PURGE_IO_ACTION Action, __in PLIST_ENTRY PendedRequestListHead, __in PSINGLE_LIST_ENTRY SentRequestListHead, __out PBOOLEAN Wait, __in BOOLEAN LockSelf)
__inline MdDeviceObject GetTargetDevice(VOID)
virtual VOID GotoRemoveState(__in WDF_IO_TARGET_STATE NewState, __in PLIST_ENTRY PendedRequestListHead, __in PSINGLE_LIST_ENTRY SentRequestListHead, __in BOOLEAN Lock, __out PBOOLEAN Wait)
__inline VOID IncrementIoCount(VOID)
virtual VOID WaitForSentIoToComplete(VOID)
NTSTATUS CallDriver(__in MdDeviceObject DeviceObject)
virtual _Must_inspect_result_ NTSTATUS Allocate(__out FxMemoryObject **PPMemory)=0
virtual size_t GetBufferSize(VOID)
PVOID __inline GetObjectHandle(VOID)
virtual VOID DeleteObject(VOID)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
__drv_restoresIRQL KIRQL __in BOOLEAN Unlock
VOID MarkNoDeleteDDI(__in FxObjectLockState State=ObjectLock)
VOID DeleteFromFailedCreate(VOID)
SINGLE_LIST_ENTRY m_DrainSingleEntry
__inline FxIrp * GetSubmitFxIrp(VOID)
__inline FxRequestContext * GetContext(VOID)
__inline VOID SetCompletionRoutine(__in_opt PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine=NULL, __in_opt WDFCONTEXT CompletionContext=NULL)
VOID __inline SetTarget(__in FxIoTarget *Target)
_Must_inspect_result_ NTSTATUS Reuse(__in PWDF_REQUEST_REUSE_PARAMS ReuseParams)
__inline BOOLEAN Enqueue(__in PFN_WDF_SYSTEMWORKITEM CallbackFunc, __in PVOID Parameter)
IWudfFile * m_pHostTargetFile
FX_URB_TYPE GetFxUrbTypeForRequest(__in FxRequestBase *Request)
VOID RemoveDeletedPipe(__in FxUsbPipe *Pipe)
WINUSB_INTERFACE_HANDLE m_WinUsbHandle
FxUsbDevice * m_UsbDevice
VOID GotoPurgeState(__in WDF_IO_TARGET_PURGE_IO_ACTION Action, __in PLIST_ENTRY PendedRequestListHead, __in PSINGLE_LIST_ENTRY SentRequestListHead, __out PBOOLEAN Wait, __in BOOLEAN LockSelf)
virtual VOID GotoStopState(__in WDF_IO_TARGET_SENT_IO_ACTION Action, __in PSINGLE_LIST_ENTRY SentRequestListHead, __out PBOOLEAN Wait, __in BOOLEAN LockSelf)
BOOLEAN m_CheckPacketSize
_Must_inspect_result_ NTSTATUS FormatTransferRequest(__in FxRequestBase *Request, __in FxRequestBuffer *Buffer, __in ULONG TransferFlags=0)
virtual VOID GotoRemoveState(__in WDF_IO_TARGET_STATE NewState, __in PLIST_ENTRY PendedRequestListHead, __in PSINGLE_LIST_ENTRY SentRequestListHead, __in BOOLEAN Lock, __out PBOOLEAN Wait)
_Must_inspect_result_ NTSTATUS FormatResetRequest(__in FxRequestBase *Request)
USBD_PIPE_INFORMATION m_PipeInformation
FxUsbPipeContinuousReader * m_Reader
_Must_inspect_result_ NTSTATUS FormatAbortRequest(__in FxRequestBase *Request)
VOID InitPipe(__in PUSBD_PIPE_INFORMATION PipeInfo, __in UCHAR InterfaceNumber, __in FxUsbInterface *UsbInterface)
friend FxUsbPipeContinuousReader
FxUsbInterface * m_UsbInterface
WINUSB_PIPE_INFORMATION m_PipeInformationUm
virtual VOID WaitForSentIoToComplete(VOID)
WDFUSBPIPE GetHandle(VOID)
static _Must_inspect_result_ NTSTATUS _SendTransfer(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in WDFUSBPIPE Pipe, __in_opt WDFREQUEST Request, __in_opt PWDF_REQUEST_SEND_OPTIONS RequestOptions, __in_opt PWDF_MEMORY_DESCRIPTOR MemoryDescriptor, __out_opt PULONG BytesTransferred, __in ULONG Flags)
virtual BOOLEAN Dispose(VOID)
static _Must_inspect_result_ NTSTATUS _FormatTransfer(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in WDFUSBPIPE Pipe, __in WDFREQUEST Request, __in_opt WDFMEMORY TransferMemory, __in_opt PWDFMEMORY_OFFSET TransferOffsets, __in ULONG Flags)
FxUsbPipe(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxUsbDevice *UsbDevice)
_Must_inspect_result_ NTSTATUS InitContinuousReader(__in PWDF_USB_CONTINUOUS_READER_CONFIG Config, __in size_t TotalBufferLength)
virtual _Must_inspect_result_ NTSTATUS GotoStartState(__in PLIST_ENTRY RequestListHead, __in BOOLEAN Lock=TRUE)
_Must_inspect_result_ NTSTATUS ValidateMemoryOffsets(__in_opt PWDFMEMORY_OFFSET Offsets)
virtual PVOID GetBuffer(VOID)=0
static __inline MxThread MxGetCurrentThread()
#define STATUS_NOT_SUPPORTED
#define NT_SUCCESS(StatCode)
BOOLEAN NTAPI KeInsertQueueDpc(IN PKDPC Dpc, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define InitializeListHead(ListHead)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
FxObjectHandleGetPtrAndGlobals(GetFxDriverGlobals(DriverGlobals), Device, FX_TYPE_DEVICE,(PVOID *)&pDevice, &pFxDriverGlobals)
PFX_DRIVER_GLOBALS pFxDriverGlobals
PFX_DRIVER_GLOBALS fxDriverGlobals
FxObjectHandleGetPtr(GetFxDriverGlobals(DriverGlobals), Fdo, FX_TYPE_DEVICE,(PVOID *)&pFdo)
FxVerifierDbgBreakPoint(pFxDriverGlobals)
@ WaitSignalBreakUnderVerifier
VOID __inline FxMdlFree(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PMDL Mdl)
#define WDF_REQUEST_SEND_INTERNAL_OPTION_FAIL_ON_PEND
@ FX_RCT_USB_PIPE_REQUEST
NTSTATUS __inline FxValidateRequestOptions(_In_ PFX_DRIVER_GLOBALS FxDriverGlobals, _In_ PWDF_REQUEST_SEND_OPTIONS Options, _In_opt_ FxRequestBase *Request=NULL)
@ FX_TYPE_IO_TARGET_USB_PIPE
enum _FX_URB_TYPE FX_URB_TYPE
#define NUM_PENDING_READS_MAX
#define FX_USB_WORKITEM_IN_PROGRESS
#define FX_USB_WORKITEM_RERUN
#define NUM_PENDING_READS_DEFAULT
__inline NTSTATUS FxVerifierCheckIrqlLevel(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in KIRQL Irql)
GLenum const GLfloat * params
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define InterlockedCompareExchangePointer
VOID NTAPI MmUnlockPages(IN PMDL Mdl)
IO_WORKITEM_ROUTINE * PMX_WORKITEM_ROUTINE
#define _Must_inspect_result_
#define UNREFERENCED_PARAMETER(P)
#define TRACE_LEVEL_VERBOSE
#define TRACE_LEVEL_ERROR
#define TRACE_LEVEL_INFORMATION
virtual VOID ReleaseAndRestore(__in FxRequestBase *Request)
WDF_REQUEST_COMPLETION_PARAMS m_CompletionParams
virtual VOID StoreAndReferenceMemory(__in FxRequestBuffer *Buffer)
IFxMemory * m_RequestMemory
static EVT_SYSTEMWORKITEM _FxUsbPipeRequestWorkItemThunk
PFN_WDF_USB_READERS_FAILED m_ReadersFailedCallback
BOOLEAN QueueWorkItemLocked(__in FxUsbPipeRepeatReader *Repeater)
ULONG ResubmitRepeater(__in FxUsbPipeRepeatReader *Repeater, __out NTSTATUS *Status)
BOOLEAN m_ReadersSubmitted
PVOID m_WorkItemRerunContext
FxUsbPipeRepeatReader m_Readers[1]
MdDeviceObject m_TargetDevice
FxLookasideList * m_Lookaside
volatile POINTER_ALIGNMENT MxThread m_WorkItemThread
static MX_WORKITEM_ROUTINE _ReadWorkItem
_Must_inspect_result_ NTSTATUS FormatRepeater(__in FxUsbPipeRepeatReader *Repeater)
~FxUsbPipeContinuousReader()
VOID CancelRepeaters(VOID)
VOID DeleteMemory(__in FxRequestBase *Request)
FxSystemWorkItem * m_WorkItem
PFN_WDF_USB_READER_COMPLETION_ROUTINE m_ReadCompleteCallback
WDFCONTEXT m_ReadCompleteContext
static EVT_WDF_REQUEST_COMPLETION_ROUTINE _FxUsbPipeRequestComplete
WDFMEMORY_OFFSET m_Offsets
_Must_inspect_result_ NTSTATUS Config(__in PWDF_USB_CONTINUOUS_READER_CONFIG Config, __in size_t TotalBufferLength)
FxUsbPipeContinuousReader(__in FxUsbPipe *Pipe, __in UCHAR NumReaders)
__inline VOID FxUsbPipeRequestWorkItemHandler(__in FxUsbPipeRepeatReader *FailedRepeater)
MxEvent ReadCompletedEvent
FxUsbPipeContinuousReader * Parent
USBD_STATUS GetUsbdStatus(VOID)
__checkReturn NTSTATUS AllocateUrb(__in USBD_HANDLE USBDHandle)
_URB_PIPE_REQUEST m_UrbLegacy
_URB_PIPE_REQUEST * m_Urb
VOID SetInfo(__in WDF_USB_REQUEST_TYPE Type, __in USBD_PIPE_HANDLE PipeHandle, __in USHORT Function)
~FxUsbPipeRequestContext(VOID)
FxUsbPipeRequestContext(__in FX_URB_TYPE FxUrbType)
virtual VOID Dispose(VOID)
virtual VOID ReleaseAndRestore(__in FxRequestBase *Request)
virtual VOID CopyParameters(__in FxRequestBase *Request)
virtual VOID Dispose(VOID)
~FxUsbPipeTransferContext(VOID)
USBD_STATUS GetUsbdStatus(VOID)
_URB_BULK_OR_INTERRUPT_TRANSFER m_UrbLegacy
_URB_BULK_OR_INTERRUPT_TRANSFER * m_Urb
ULONG GetUrbTransferLength(VOID)
FxUsbPipeTransferContext(__in FX_URB_TYPE UrbType)
__checkReturn NTSTATUS AllocateUrb(__in USBD_HANDLE USBDHandle)
VOID SetUrbInfo(__in USBD_PIPE_HANDLE PipeHandle, __in ULONG TransferFlags)
VOID SetUsbType(__in WDF_USB_REQUEST_TYPE Type)
WDF_USB_REQUEST_COMPLETION_PARAMS m_UsbParameters
virtual VOID CopyParameters(__in FxRequestBase *Request)
virtual VOID StoreAndReferenceMemory(__in FxRequestBuffer *Buffer)
USBD_STATUS GetUsbdStatus(VOID)
virtual VOID ReleaseAndRestore(__in FxRequestBase *Request)
_Must_inspect_result_ BOOLEAN IsVersionGreaterThanOrEqualTo(__in ULONG Major, __in ULONG Minor)
ULONG FxVerifierDbgWaitForSignalTimeoutInSec
_Must_inspect_result_ BOOLEAN IsVerificationEnabled(__in ULONG Major, __in ULONG Minor, __in FxVerifierDownlevelOption DownLevel)
VOID WaitForSignal(__in MxEvent *Event, __in PCSTR ReasonForWaiting, __in PVOID Handle, __in ULONG WarningTimeoutInSec, __in ULONG WaitSignalFlags)
struct _SINGLE_LIST_ENTRY * Next
struct _UMURB_PIPE_REQUEST UmUrbPipeRequest
USBD_PIPE_HANDLE PipeHandle
USBD_PIPE_HANDLE PipeHandle
struct _URB_HEADER UrbHeader
union _WDF_USB_REQUEST_COMPLETION_PARAMS::@3909 Parameters
struct _WDF_USB_REQUEST_COMPLETION_PARAMS::@3909::@3913 PipeWrite
struct _WDF_USB_REQUEST_COMPLETION_PARAMS::@3909::@3914 PipeRead
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_UNSUCCESSFUL
#define STATUS_INVALID_DEVICE_STATE
#define STATUS_INSUFFICIENT_RESOURCES
#define UMURB_FUNCTION_ABORT_PIPE
#define UMURB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL
#define URB_FUNCTION_ABORT_PIPE
#define URB_FUNCTION_RESET_PIPE
#define USBD_TRANSFER_DIRECTION_IN
#define USBD_SHORT_TRANSFER_OK
_In_ PVOID _In_ LONG InterfaceNumber
NTSTATUS USBD_UrbAllocate(_In_ USBD_HANDLE USBDHandle, _Outptr_result_bytebuffer_(sizeof(URB)) PURB *Urb)
VOID USBD_UrbFree(_In_ USBD_HANDLE USBDHandle, _In_ PURB Urb)
VOID FxFormatUsbRequest(__in FxRequestBase *Request, __in PURB Urb, __in FX_URB_TYPE FxUrbType, __drv_when(FxUrbType==FxUrbTypeUsbdAllocated, __in) __drv_when(FxUrbType !=FxUrbTypeUsbdAllocated, __in_opt) USBD_HANDLE UsbdHandle)
VOID FxUsbUmFormatRequest(__in FxRequestBase *Request, __in_xcount(Urb->Length) PUMURB_HEADER Urb, __in IWudfFile *HostFile, __in BOOLEAN Reuse)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_In_ WDFDPC _In_ BOOLEAN Wait
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
enum _WDF_IO_TARGET_PURGE_IO_ACTION WDF_IO_TARGET_PURGE_IO_ACTION
@ WdfIoTargetCancelSentIo
enum _WDF_IO_TARGET_SENT_IO_ACTION WDF_IO_TARGET_SENT_IO_ACTION
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
@ WdfIoTargetPurgeIoAndWait
WDF_EXTERN_C_START enum _WDF_IO_TARGET_STATE WDF_IO_TARGET_STATE
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS RequestOptions
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
FORCEINLINE VOID WDF_REQUEST_REUSE_PARAMS_INIT(_Out_ PWDF_REQUEST_REUSE_PARAMS Params, _In_ ULONG Flags, _In_ NTSTATUS Status)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
_In_ WDFUSBINTERFACE _In_ UCHAR _Out_opt_ PWDF_USB_PIPE_INFORMATION PipeInfo
_In_ WDFUSBINTERFACE UsbInterface
_Must_inspect_result_ _In_ WDFDEVICE _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFUSBDEVICE * UsbDevice
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _In_ PWDF_USB_CONTROL_SETUP_PACKET _In_opt_ PWDF_MEMORY_DESCRIPTOR MemoryDescriptor
@ WdfUsbRequestTypePipeReset
@ WdfUsbRequestTypePipeWrite
@ WdfUsbRequestTypePipeRead
@ WdfUsbRequestTypePipeAbort
enum _WDF_USB_REQUEST_TYPE WDF_USB_REQUEST_TYPE
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_ WDFREQUEST _In_ PWDF_USB_CONTROL_SETUP_PACKET _In_opt_ WDFMEMORY TransferMemory
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _In_ PWDF_USB_CONTROL_SETUP_PACKET _In_opt_ PWDF_MEMORY_DESCRIPTOR _Out_opt_ PULONG BytesTransferred
_Must_inspect_result_ _In_ ULONG Flags
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList