static VOID AllowReclaimOnCancel(_In_ XhciTransferRing *Ring)
static ULONG EstimateSegments(_In_ XhciTransferRing *Ring, _In_ const XhciIsochStage *Stage)
static VOID SuspendRingFill(_In_ XhciTransferRing *Ring)
static EVT_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE EvtIoCanceledOnQueue
static XhciIsochStage * AcquireStage(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochTransfer *Transfer)
static VOID OnRingStarved(_In_ XhciTransferRing *Ring)
static BOOLEAN OnTransferEvent(_In_ XhciTransferRing *Ring, _In_ const XHCI_TRB *Event)
static BOOLEAN TakeRequest(_In_ XhciTransferRing *Ring, _In_ WDFREQUEST Request, _Out_ XhciIsochTransfer **Taken)
static EVT_WDF_REQUEST_CANCEL EvtRequestCancel
static ULONG ReleaseAllStages(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochTransfer *Transfer)
static VOID ReleaseParkedMapping(_In_ XhciTransferRing *Ring)
static EVT_WDF_TIMER EvtWatchdog
volatile LONG m_SegmentWait
static Outcome EncodeStage(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochStage *Stage)
static VOID AwaitRingEmpty(_In_ XhciTransferRing *Ring)
static VOID SkipUnmapped(_Inout_ XhciIsochTransfer *Transfer)
static VOID RecoverTransfers(_In_ XhciTransferRing *Ring)
static VOID FinishExpiredIsoch(_In_ XhciTransferRing *Ring, _In_ const XhciIsochTransfer *Newest, _In_ ULONG Sequence)
BOOLEAN m_DoorbellAfterFirstTd
static VOID WriteStage(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochStage *Stage)
static EVT_WDF_DPC EvtCompletionDpc
static VOID FreeStage(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochStage *Stage)
static VOID FillLoop(_In_ XhciTransferRing *Ring)
static VOID CompleteAfterUncancel(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochTransfer *Transfer, _In_ USBD_STATUS PacketStatus, _In_ USBD_STATUS HeaderStatus, _In_ BOOLEAN FinishCanceled, _In_ BOOLEAN Async)
XhciIsochStage * m_CurrentStage
static NTSTATUS AcquireStageMdl(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochStage *Stage)
static Outcome FailStage(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochStage *Stage)
volatile LONG m_FillWanted
static DRIVER_LIST_CONTROL DmaCallback
static BOOLEAN HasQueuedWork(_In_ const XhciTransferRing *Ring)
static VOID CompletePlain(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochTransfer *Transfer, _In_ USBD_STATUS PacketStatus, _In_ USBD_STATUS HeaderStatus, _In_ BOOLEAN Async)
static VOID InsertLink(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochStage *Stage, _In_ BOOLEAN FirstOfTd)
static Outcome PrimeStage(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochStage *Stage)
static BOOLEAN SizeStage(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochStage *Stage)
static VOID CompleteBatch(_In_ XhciTransferRing *Ring, _Inout_ PLIST_ENTRY Batch)
static VOID CompleteTd(_In_ XhciTransferRing *Ring, _In_ XhciIsochTransfer *Transfer, _In_ XhciIsochStage *Stage, _In_ ULONG Sequence, _In_ ULONG Code, _In_ ULONG Bytes, _In_ BOOLEAN CloseStage)
ULONG m_MissedServiceErrors
static VOID Ed0Event(_In_ XhciTransferRing *Ring, _In_ const XHCI_TRB *Event)
static VOID OnClientPipeReset(_In_ XhciTransferRing *Ring)
static BOOLEAN ParkOnSegments(_In_ XhciTransferRing *Ring)
static VOID KickAfterStage(_In_ XhciTransferRing *Ring, _In_ ULONG InFlight)
static BOOLEAN FindTrb(_In_ XhciTransferRing *Ring, _In_ const XHCI_TRB *Event, _Outptr_result_maybenull_ XhciIsochStage **Found, _Out_ PULONG Bytes)
static XhciIsochStage * NextTdSlot(_In_ XhciTransferRing *Ring)
LIST_ENTRY m_WaitingForCancel
static VOID Ed1Event(_In_ XhciTransferRing *Ring, _In_ const XHCI_TRB *Event)
static BOOLEAN PacketsValid(_In_ const XhciIsochTransfer *Transfer)
static VOID ConsumePendingEvents(_In_ XhciTransferRing *Ring)
static BOOLEAN DoorbellRungSinceFill(_In_ const XhciTransferRing *Ring)
static BOOLEAN FinishLostStages(_In_ XhciTransferRing *Ring)
static VOID Finalize(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochTransfer *Transfer, _In_ USBD_STATUS PacketStatus, _In_ USBD_STATUS HeaderStatus)
static VOID PutScatterGather(_In_ XhciTransferRing *Ring, _In_opt_ PSCATTER_GATHER_LIST SgList)
volatile LONG m_RingEmptySeen
static ULONG LayoutStage(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochStage *Stage, _In_ BOOLEAN Commit)
static VOID SegmentsArrived(_In_ XhciTransferRing *Ring, _In_ NTSTATUS Status)
static EVT_WDF_IO_QUEUE_STATE ReadyNotification
static BOOLEAN OwnsRequests(_In_ const XhciTransferRing *Ring)
ULONG m_LastScheduledFrame
volatile LONG m_LateStage
static VOID FlagMissedPackets(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochTransfer *Transfer)
static VOID BuildTdsFromQueue(_In_ XhciTransferRing *Ring)
static VOID RetireExpiredStages(_In_ XhciTransferRing *Ring, _In_ XhciIsochTransfer *Transfer, _In_ XhciIsochStage *Stage, _In_ ULONG Sequence)
static NTSTATUS ScheduleStartFrame(_In_ XhciTransferRing *Ring, _Inout_ XhciIsochTransfer *Transfer)
static BOOLEAN LeaveRingEmptyWait(_In_ XhciTransferRing *Ring)
static VOID ResumeRingFill(_In_ XhciTransferRing *Ring)
volatile LONG m_FillAgain
_Check_return_ _In_ DXGK_EVENT_TYPE _In_ ULONG Event
static const WCHAR Cleanup[]
#define _Outptr_result_maybenull_
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
PSCATTER_GATHER_LIST SgList
XhciDmaBuffer * ScanSegment
XhciIsochTransfer * Transfer
XhciDmaBuffer * FirstSegment
XhciDmaBuffer * LastSegment
static const ULONG StageSlots
XhciIsochStage Stages[StageSlots]
XhciIsochCancel CancelState
struct _URB_ISOCH_TRANSFER * Urb
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFREQUEST Request
_In_ UCHAR _In_ UCHAR _In_ ULONG Code
WDF_EXTERN_C_START typedef _In_ WDFDEVICE _In_ WDFCONTEXT _In_ WDF_DMA_DIRECTION _In_ PSCATTER_GATHER_LIST SgList
struct _SCATTER_GATHER_LIST * PSCATTER_GATHER_LIST