32 __in USBD_HANDLE USBDHandle
75 #if (FX_CORE_MODE == FX_CORE_KERNEL_MODE) 77 #elif (FX_CORE_MODE == FX_CORE_USER_MODE) 135 __in USBD_HANDLE USBDHandle
151 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 155 __in WINUSB_INTERFACE_HANDLE WinUsbHandle,
196 #if (FX_CORE_MODE == FX_CORE_KERNEL_MODE) 202 #elif (FX_CORE_MODE == FX_CORE_USER_MODE) 221 #define NUM_PENDING_READS_DEFAULT (2) 222 #define NUM_PENDING_READS_MAX (10) 227 #define FX_USB_WORKITEM_IN_PROGRESS (0x00000001) 228 #define FX_USB_WORKITEM_RERUN (0x00000002) 247 __in size_t TotalBufferLength
282 pContext =
Request->GetContext();
314 EVT_WDF_REQUEST_COMPLETION_ROUTINE
427 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 522 #if (FX_CORE_MODE == FX_CORE_KERNEL_MODE) 524 #elif (FX_CORE_MODE == FX_CORE_USER_MODE) 540 #if (FX_CORE_MODE == FX_CORE_KERNEL_MODE) 542 #elif (FX_CORE_MODE == FX_CORE_USER_MODE) 551 __in size_t TotalBufferLength
559 #if (FX_CORE_MODE == FX_CORE_KERNEL_MODE) 561 #elif (FX_CORE_MODE == FX_CORE_USER_MODE) 576 #
if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
578 #elif (FX_CORE_MODE == FX_CORE_USER_MODE) 654 if (UsbdPipeType <
sizeof(
types)/
sizeof(
types[0])) {
655 return types[UsbdPipeType];
716 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 747 #endif // _FXUSBPIPE_H_ ~FxUsbPipeContinuousReader()
FxUsbPipeRequestContext(__in FX_URB_TYPE FxUrbType)
_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
IFxMemory * m_RequestMemory
_Must_inspect_result_ NTSTATUS FormatTransferRequest(__in FxRequestBase *Request, __in FxRequestBuffer *Buffer, __in ULONG TransferFlags=0)
enum _WDF_IO_TARGET_PURGE_IO_ACTION WDF_IO_TARGET_PURGE_IO_ACTION
_Must_inspect_result_ NTSTATUS FormatAbortRequest(__in FxRequestBase *Request)
virtual VOID ReleaseAndRestore(__in FxRequestBase *Request)
virtual VOID Dispose(VOID)
_In_ ULONG _In_ ULONG _In_ ULONG Length
static MX_WORKITEM_ROUTINE _ReadWorkItem
USBD_STATUS GetUsbdStatus(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)
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
#define USB_ENDPOINT_DIRECTION_IN(x)
virtual VOID Delete(VOID)=0
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)
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 _Must_inspect_result_ NTSTATUS GotoStartState(__in PLIST_ENTRY RequestListHead, __in BOOLEAN Lock=TRUE)
VOID CancelRepeaters(VOID)
_In_ WDFDPC _In_ BOOLEAN Wait
__inline VOID SetNoCheckPacketSize(VOID)
friend FxUsbPipeContinuousReader
ULONG GetUrbTransferLength(VOID)
MxEvent ReadCompletedEvent
VOID DeleteMemory(__in FxRequestBase *Request)
FxUsbPipe(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxUsbDevice *UsbDevice)
IN PVOID IN PVOID IN USHORT IN USHORT Size
__inline BOOLEAN IsOutEndpoint(VOID)
IO_WORKITEM_ROUTINE MX_WORKITEM_ROUTINE
_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
__checkReturn NTSTATUS AllocateUrb(__in USBD_HANDLE USBDHandle)
FxUsbPipeTransferContext(__in FX_URB_TYPE UrbType)
PFN_WDF_USB_READERS_FAILED m_ReadersFailedCallback
ULONG ResubmitRepeater(__in FxUsbPipeRepeatReader *Repeater, __out NTSTATUS *Status)
enum _FX_URB_TYPE FX_URB_TYPE
FxUsbDevice * m_UsbDevice
virtual BOOLEAN Dispose(VOID)
FxSystemWorkItem * m_WorkItem
enum _USBD_PIPE_TYPE USBD_PIPE_TYPE
static EVT_SYSTEMWORKITEM _FxUsbPipeRequestWorkItemThunk
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_ WDFREQUEST _In_ PWDF_USB_CONTROL_SETUP_PACKET _In_opt_ WDFMEMORY TransferMemory
BOOLEAN QueueWorkItemLocked(__in FxUsbPipeRepeatReader *Repeater)
virtual VOID Dispose(VOID)
enum _WDF_IO_TARGET_SENT_IO_ACTION WDF_IO_TARGET_SENT_IO_ACTION
BOOLEAN m_ReadersSubmitted
FX_URB_TYPE GetUrbType(VOID)
_In_ WDFUSBPIPE _Out_ PWDF_USB_PIPE_INFORMATION PipeInformation
BOOLEAN IsType(__in WDF_USB_PIPE_TYPE Type)
__inline BOOLEAN IsInEndpoint(VOID)
_URB_BULK_OR_INTERRUPT_TRANSFER m_UrbLegacy
PVOID __inline GetObjectHandle(VOID)
virtual VOID CopyParameters(__in FxRequestBase *Request)
static MdDeferredRoutineType _FxUsbPipeContinuousReadDpc
_Must_inspect_result_ NTSTATUS Config(__in PWDF_USB_CONTINUOUS_READER_CONFIG Config, __in size_t TotalBufferLength)
VOID GetInformation(__out PWDF_USB_PIPE_INFORMATION PipeInformation)
#define POINTER_ALIGNMENT
static EVT_WDF_REQUEST_COMPLETION_ROUTINE _FxUsbPipeRequestComplete
USBD_STATUS GetUsbdStatus(VOID)
#define STATUS_INVALID_BUFFER_SIZE
_In_ PVOID _In_ LONG InterfaceNumber
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 ValidateTransferLength(__in size_t Length)
_Must_inspect_result_ _In_ ULONG Flags
_In_ WDFUSBINTERFACE UsbInterface
~FxUsbPipeRequestContext(VOID)
WDF_EXTERN_C_START enum _WDF_IO_TARGET_STATE WDF_IO_TARGET_STATE
FxUsbPipeContinuousReader(__in FxUsbPipe *Pipe, __in UCHAR NumReaders)
WDFUSBPIPE GetHandle(VOID)
FxLookasideList * m_Lookaside
USBD_STATUS GetUsbdStatus(VOID)
virtual VOID GotoStopState(__in WDF_IO_TARGET_SENT_IO_ACTION Action, __in PSINGLE_LIST_ENTRY SentRequestListHead, __out PBOOLEAN Wait, __in BOOLEAN LockSelf)
struct _UMURB_BULK_OR_INTERRUPT_TRANSFER UmUrbBulkOrInterruptTransfer
_Must_inspect_result_ _In_ WDFDEVICE _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFUSBDEVICE * UsbDevice
FxUsbPipeContinuousReader * m_Reader
VOID SetInfo(__in WDF_USB_REQUEST_TYPE Type, __in USBD_PIPE_HANDLE PipeHandle, __in USHORT Function)
_Must_inspect_result_ NTSTATUS InitContinuousReader(__in PWDF_USB_CONTINUOUS_READER_CONFIG Config, __in size_t TotalBufferLength)
virtual VOID ReleaseAndRestore(__in FxRequestBase *Request)
FxUsbInterface * m_UsbInterface
USBD_PIPE_INFORMATION m_PipeInformation
WDF_USB_PIPE_TYPE GetType(VOID)
WDFCONTEXT m_ReadCompleteContext
#define _Must_inspect_result_
_In_ WDFUSBINTERFACE _In_ UCHAR _Out_opt_ PWDF_USB_PIPE_INFORMATION PipeInfo
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
ULONG GetMaxPacketSize(VOID)
KDEFERRED_ROUTINE MdDeferredRoutineType
_Must_inspect_result_ NTSTATUS FormatRepeater(__in FxUsbPipeRepeatReader *Repeater)
PFN_WDF_USB_READER_COMPLETION_ROUTINE m_ReadCompleteCallback
FxUsbPipeRepeatReader m_Readers[1]
EVT_WDF_USB_READERS_FAILED * PFN_WDF_USB_READERS_FAILED
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
EVT_WDF_USB_READER_COMPLETION_ROUTINE * PFN_WDF_USB_READER_COMPLETION_ROUTINE
PVOID m_WorkItemRerunContext
WDFMEMORY_OFFSET m_Offsets
ULONG TransferBufferLength
USBD_PIPE_HANDLE WdmGetPipeHandle(VOID)
_URB_PIPE_REQUEST * m_Urb
enum _WDF_USB_PIPE_TYPE WDF_USB_PIPE_TYPE
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS RequestOptions
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
WINUSB_PIPE_INFORMATION m_PipeInformationUm
_URB_PIPE_REQUEST m_UrbLegacy
FxUsbPipeContinuousReader * Parent
#define NUM_PENDING_READS_MAX
__inline VOID FxUsbPipeRequestWorkItemHandler(__in FxUsbPipeRepeatReader *FailedRepeater)
#define USB_ENDPOINT_DIRECTION_OUT(x)
VOID SetUrbInfo(__in USBD_PIPE_HANDLE PipeHandle, __in ULONG TransferFlags)
_Must_inspect_result_ NTSTATUS FormatResetRequest(__in FxRequestBase *Request)
virtual VOID StoreAndReferenceMemory(__in FxRequestBuffer *Buffer)
volatile POINTER_ALIGNMENT MxThread m_WorkItemThread
~FxUsbPipeTransferContext(VOID)
BOOLEAN m_CheckPacketSize
__checkReturn NTSTATUS AllocateUrb(__in USBD_HANDLE USBDHandle)
USBD_HANDLE GetUSBDHandle(VOID)
static WDF_USB_PIPE_TYPE _UsbdPipeTypeToWdf(__in USBD_PIPE_TYPE UsbdPipeType)
MdDeviceObject m_TargetDevice
enum _WDF_USB_REQUEST_TYPE WDF_USB_REQUEST_TYPE
VOID InitPipe(__in PUSBD_PIPE_INFORMATION PipeInfo, __in UCHAR InterfaceNumber, __in FxUsbInterface *UsbInterface)
virtual VOID WaitForSentIoToComplete(VOID)
virtual VOID StoreAndReferenceMemory(__in FxRequestBuffer *Buffer)
_URB_BULK_OR_INTERRUPT_TRANSFER * m_Urb