22 for (CurEntry = QueueHead->
Flink; CurEntry != QueueHead; CurEntry = CurEntry->
Flink)
84#define STREAM_DATA_OFFSET (0)
126CIrpQueue::AddMapping(
136 LONG TotalStreamData;
137 LONG StreamPageCount;
197 HeaderLength =
Header->DataUsed;
202 HeaderLength =
Header->FrameExtent;
206 TotalStreamData += HeaderLength;
251 for(
Index = 0; Index < StreamData->StreamHeaderCount;
Index++)
282 *
Data = TotalStreamData;
296CIrpQueue::GetMapping(
373CIrpQueue::UpdateMapping(
495 ULONG NumDataAvailable;
499 ULONG StreamHeaderIndex;
506 NumDataAvailable = 0;
523 for (; StreamHeaderIndex <
StreamData->StreamHeaderCount; StreamHeaderIndex++)
532 NumDataAvailable +=
Size - CurrentOffset;
541 CurEntry = CurEntry->
Flink;
552 StreamHeaderIndex = 0;
557 return NumDataAvailable;
562CIrpQueue::CancelBuffers()
584CIrpQueue::GetMappingWithTag(
615 DPRINT(
"GetMappingWithTag no mapping available\n");
636 PC_ASSERT(m_StreamHeaderIndex < StreamData->StreamHeaderCount);
707CIrpQueue::ReleaseMappingWithTag(
728 DPRINT(
"ReleaseMappingWithTag Tag %p not found\n",
Tag);
756 DPRINT1(
"Mapping released out of order\n");
829CIrpQueue::GetCurrentIrpOffset()
837CIrpQueue::GetAcquiredTagRange(
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
PKSPIN_DESCRIPTOR m_Descriptor
CIrpQueue(IUnknown *OuterUnknown)
PKSSTREAM_HEADER m_CurStreamHeader
PKSPIN_CONNECT m_ConnectDetails
ULONG m_StreamHeaderIndex
ULONG m_TagSupportEnabled
#define NT_SUCCESS(StatCode)
KSDDKAPI VOID NTAPI KsCancelIo(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock)
KSDDKAPI VOID NTAPI KsAddIrpToCancelableQueue(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock, IN PIRP Irp, IN KSLIST_ENTRY_LOCATION ListLocation, IN PDRIVER_CANCEL DriverCancel OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsProbeStreamIrp(IN PIRP Irp, IN ULONG ProbeFlags, IN ULONG HeaderSize)
KSDDKAPI PIRP NTAPI KsRemoveIrpFromCancelableQueue(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock, IN KSLIST_ENTRY_LOCATION ListLocation, IN KSIRP_REMOVAL_OPERATION RemovalOperation)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define InsertHeadList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define KeReleaseSpinLock(sl, irql)
#define KeAcquireSpinLock(sl, irql)
#define KeGetCurrentIrql()
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
union Alignment_ Alignment
IoSetCancelRoutine(Irp, CancelRoutine)
struct KSSTREAM_DATA * PKSSTREAM_DATA
NTSTATUS NTAPI NewIrpQueue(IN IIrpQueue **Queue)
#define STREAM_DATA_OFFSET
static PIRP RemoveHeadList_IRP(IN OUT PLIST_ENTRY QueueHead)
struct KSSTREAM_TAG * PKSSTREAM_TAG
struct KSSTREAM_HEADER * PKSSTREAM_HEADER
@ KsAcquireAndRemoveOnlySingleItem
#define IOCTL_KS_READ_STREAM
@ KSINTERFACE_STANDARD_LOOPED_STREAMING
#define IOCTL_KS_WRITE_STREAM
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
VOID FreeItem(IN PVOID Item)
VOID NTAPI MmUnmapLockedPages(IN PVOID BaseAddress, IN PMDL Mdl)
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IoCompleteRequest
PHYSICAL_ADDRESS NTAPI MmGetPhysicalAddress(IN PVOID Address)
KSPIN_INTERFACE Interface
struct _IO_STACK_LOCATION::@1584::@1585 DeviceIoControl
union _IO_STACK_LOCATION::@1584 Parameters
union _IRP::@1586 AssociatedIrp
struct _LIST_ENTRY * Flink
#define CONTAINING_RECORD(address, type, field)
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ PIRP _In_ WDFQUEUE Queue
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesWritten
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
#define IsEqualGUIDAligned(guid1, guid2)
_Must_inspect_result_ _In_ ULONG Flags
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
#define IO_SOUND_INCREMENT
#define MmGetMdlByteOffset(_Mdl)
#define ROUND_TO_PAGES(Size)
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size)