25 for (CurEntry = QueueHead->
Flink; CurEntry != QueueHead; CurEntry = CurEntry->
Flink)
87#define STREAM_DATA_OFFSET (0)
130CIrpQueue::AddMapping(
140 LONG TotalStreamData;
141 LONG StreamPageCount;
201 HeaderLength =
Header->DataUsed;
206 HeaderLength =
Header->FrameExtent;
210 TotalStreamData += HeaderLength;
256 for(
Index = 0; Index < StreamData->StreamHeaderCount;
Index++)
287 *
Data = TotalStreamData;
301CIrpQueue::GetMapping(
378CIrpQueue::UpdateMapping(
500 ULONG NumDataAvailable;
504 ULONG StreamHeaderIndex;
511 NumDataAvailable = 0;
528 for (; StreamHeaderIndex <
StreamData->StreamHeaderCount; StreamHeaderIndex++)
537 NumDataAvailable +=
Size - CurrentOffset;
546 CurEntry = CurEntry->
Flink;
557 StreamHeaderIndex = 0;
562 return NumDataAvailable;
567CIrpQueue::CancelBuffers()
589CIrpQueue::GetMappingWithTag(
620 DPRINT(
"GetMappingWithTag no mapping available\n");
641 PC_ASSERT(m_StreamHeaderIndex < StreamData->StreamHeaderCount);
712CIrpQueue::ReleaseMappingWithTag(
733 DPRINT(
"ReleaseMappingWithTag Tag %p not found\n",
Tag);
761 DPRINT1(
"Mapping released out of order\n");
816 Irp->IoStatus.Information = IoStack->
Parameters.DeviceIoControl.OutputBufferLength;
834CIrpQueue::GetCurrentIrpOffset()
842CIrpQueue::GetAcquiredTagRange(
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 _NAMED_PIPE_CREATE_PARAMETERS * Parameters
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
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
_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)