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)
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
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)
FX_URB_TYPE GetUrbType(VOID)
BOOLEAN IsType(__in WDF_USB_PIPE_TYPE Type)
__inline BOOLEAN IsInEndpoint(VOID)
USBD_HANDLE GetUSBDHandle(VOID)
static WDF_USB_PIPE_TYPE _UsbdPipeTypeToWdf(__in USBD_PIPE_TYPE UsbdPipeType)
__inline BOOLEAN IsOutEndpoint(VOID)
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
_Must_inspect_result_ NTSTATUS ValidateTransferLength(__in size_t Length)
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)
ULONG GetMaxPacketSize(VOID)
__inline VOID SetNoCheckPacketSize(VOID)
USBD_PIPE_HANDLE WdmGetPipeHandle(VOID)
_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)
virtual VOID Delete(VOID)=0
return pObject GetObjectHandle()
return pRequest GetInformation()
enum _FX_URB_TYPE FX_URB_TYPE
#define NUM_PENDING_READS_MAX
@ FxUsbPipeHighSpeedMaxTransferSize
@ FxUsbPipeControlMaxTransferSize
@ FxUsbPipeLowSpeedMaxTransferSize
#define _Must_inspect_result_
KDEFERRED_ROUTINE MdDeferredRoutineType
IO_WORKITEM_ROUTINE MX_WORKITEM_ROUTINE
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define STATUS_INVALID_BUFFER_SIZE
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()
static MdDeferredRoutineType _FxUsbPipeContinuousReadDpc
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
__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)
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)
virtual VOID StoreAndReferenceMemory(__in FxRequestBuffer *Buffer)
__checkReturn NTSTATUS AllocateUrb(__in USBD_HANDLE USBDHandle)
VOID SetUrbInfo(__in USBD_PIPE_HANDLE PipeHandle, __in ULONG TransferFlags)
virtual VOID StoreAndReferenceMemory(__in FxRequestBuffer *Buffer)
USBD_STATUS GetUsbdStatus(VOID)
virtual VOID ReleaseAndRestore(__in FxRequestBase *Request)
struct _UMURB_BULK_OR_INTERRUPT_TRANSFER UmUrbBulkOrInterruptTransfer
ULONG TransferBufferLength
#define USB_ENDPOINT_DIRECTION_OUT(x)
#define USB_ENDPOINT_DIRECTION_IN(x)
enum _USBD_PIPE_TYPE USBD_PIPE_TYPE
_In_ PVOID _In_ LONG InterfaceNumber
_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
enum _WDF_IO_TARGET_PURGE_IO_ACTION WDF_IO_TARGET_PURGE_IO_ACTION
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
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
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
EVT_WDF_USB_READERS_FAILED * PFN_WDF_USB_READERS_FAILED
_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
@ WdfUsbPipeTypeInterrupt
@ WdfUsbPipeTypeIsochronous
enum _WDF_USB_REQUEST_TYPE WDF_USB_REQUEST_TYPE
EVT_WDF_USB_READER_COMPLETION_ROUTINE * PFN_WDF_USB_READER_COMPLETION_ROUTINE
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_ WDFREQUEST _In_ PWDF_USB_CONTROL_SETUP_PACKET _In_opt_ WDFMEMORY TransferMemory
_In_ WDFUSBPIPE _Out_ PWDF_USB_PIPE_INFORMATION PipeInformation
enum _WDF_USB_PIPE_TYPE WDF_USB_PIPE_TYPE
_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
#define POINTER_ALIGNMENT
_Must_inspect_result_ _In_ ULONG Flags