static EventTag * TagFromEvent(_In_opt_ XhciTransferRing *Ring, _In_ const XHCI_TRB *Event)
BOOLEAN m_CanceledDpcRunning
_Requires_lock_held_(m_Ring->m_Lock) NTSTATUS CompleteHeld()
static VOID RecoverTransfers(_In_ XhciTransferRing *Ring)
XhciTransferRing * m_Ring
static BOOLEAN HasQueuedWork(_In_ const XhciTransferRing *Ring)
BOOLEAN m_ReclaimOnCancelAllowed
static BOOLEAN OnTransferEvent(_In_opt_ XhciTransferRing *Ring, _In_ XhciController *Controller, _In_ const XHCI_TRB *Event)
BOOLEAN OnEventDataEvent(_In_ EventTag *Tag, _In_ const XHCI_TRB *Event)
EventTag m_Tags[TagCount]
static const ULONG TagCount
WDFDPC m_CanceledOnQueueDpc
static BOOLEAN DoorbellRungSinceFill(_In_ const XhciTransferRing *Ring)
static EVT_WDF_DPC EvtCanceledOnQueueDpc
VOID BuildControlTd(_Inout_ XhciControlTransfer *Transfer)
static EVT_WDF_REQUEST_CANCEL EvtRequestCancel
VOID Abort(_Inout_ XhciControlTransfer *Transfer, _In_ BOOLEAN FromTimer)
VOID ReleaseResources(_Inout_ XhciControlTransfer *Transfer)
static EVT_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE EvtIoCanceledOnQueue
static EVT_WDF_IO_QUEUE_IO_DEFAULT EvtIoDefault
VOID WriteTd(_Inout_ XhciControlTransfer *Transfer)
static EVT_WDF_TIMER EvtTimeout
static VOID SuspendRingFill(_In_ XhciTransferRing *Ring)
VOID InitTransfer(_Out_ XhciControlTransfer *Transfer, _In_ WDFREQUEST Request)
BOOLEAN LocateTrb(_In_ const XhciControlTransfer *Transfer, _In_ const XHCI_TRB *Event, _Out_ PULONG Bytes, _Out_ PULONG SkippedTds) const
BOOLEAN m_ReclaimAndAcknowledge
XhciControlTransfer * m_Current
static DRIVER_LIST_CONTROL EvtDmaReady
static VOID ResumeRingFill(_In_ XhciTransferRing *Ring)
volatile LONG m_ReservedMdlBusy
LIST_ENTRY m_CanceledOnQueue
BOOLEAN m_ImmediateAllowed
BOOLEAN m_AcknowledgeExpectedEvents
static EVT_WDF_DPC EvtCompletionDpc
static NTSTATUS EnableForwardProgress(_In_ XhciTransferRing *Ring, _In_ ULONG MaxTransferSize)
BOOLEAN OnTrbEvent(_In_ const XHCI_TRB *Event)
static VOID AllowReclaimOnCancel(_In_ XhciTransferRing *Ring)
static VOID ConsumePendingEvents(_In_ XhciTransferRing *Ring)
NTSTATUS PrepareTransfer(_Inout_ XhciControlTransfer *Transfer)
#define _Requires_lock_held_(lock)
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
#define DECLSPEC_ALIGN(x)
static const WCHAR Signature[]
static const WCHAR Cleanup[]
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
_In_ ULONG MaxTransferSize
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXCONTROLLER * Controller
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST Request
_Must_inspect_result_ _In_ UCXENDPOINT _In_ PVOID Tag
_In_ WDFCOLLECTION _In_ ULONG Index