78 #define STREAM_DATA_OFFSET (0) 121 CIrpQueue::AddMapping(
294 CIrpQueue::GetMapping(
365 CIrpQueue::UpdateMapping(
504 CIrpQueue::CancelBuffers()
529 CIrpQueue::GetMappingWithTag(
555 DPRINT(
"GetMappingWithTag no mapping available\n");
622 CIrpQueue::ReleaseMappingWithTag(
660 if (CurEntry ==
NULL)
663 DPRINT(
"ReleaseMappingWithTag Tag %p not found\n",
Tag);
750 Irp->IoStatus.Information = IoStack->
Parameters.DeviceIoControl.OutputBufferLength;
766 CIrpQueue::HasLastMappingFailed()
773 CIrpQueue::GetCurrentIrpOffset()
781 CIrpQueue::GetAcquiredTagRange(
#define KeGetCurrentIrql()
_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
#define IOCTL_KS_WRITE_STREAM
KSPIN_INTERFACE Interface
#define STATUS_INSUFFICIENT_RESOURCES
PKSPIN_CONNECT m_ConnectDetails
_In_ ULONG _In_ ULONG _In_ ULONG Length
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
struct KSSTREAM_TAG * PKSSTREAM_TAG
_Must_inspect_result_ _In_ WDFDEVICE _In_ PIRP _In_ WDFQUEUE Queue
#define IOCTL_KS_READ_STREAM
PLIST_ENTRY NTAPI ExInterlockedInsertTailList(IN OUT PLIST_ENTRY ListHead, IN OUT PLIST_ENTRY ListEntry, IN OUT PKSPIN_LOCK Lock)
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
KSDDKAPI NTSTATUS NTAPI KsProbeStreamIrp(IN PIRP Irp, IN ULONG ProbeFlags, IN ULONG HeaderSize)
IN PVOID IN PVOID IN USHORT IN USHORT Size
BOOL Init(PUSERCONNECT UserCon)
struct KSSTREAM_HEADER * PKSSTREAM_HEADER
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)
#define IO_SOUND_INCREMENT
#define IsEqualGUIDAligned(guid1, guid2)
KSDDKAPI PIRP NTAPI KsRemoveIrpFromCancelableQueue(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock, IN KSLIST_ENTRY_LOCATION ListLocation, IN KSIRP_REMOVAL_OPERATION RemovalOperation)
VOID FreeItem(IN PVOID Item)
PLIST_ENTRY NTAPI ExInterlockedInsertHeadList(IN OUT PLIST_ENTRY ListHead, IN OUT PLIST_ENTRY ListEntry, IN OUT PKSPIN_LOCK Lock)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
PKSPIN_DESCRIPTOR m_Descriptor
KSDDKAPI VOID NTAPI KsCancelIo(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock)
VOID NTAPI MmUnmapLockedPages(IN PVOID BaseAddress, IN PMDL Mdl)
volatile ULONG m_CurrentOffset
union Alignment_ Alignment
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
PLIST_ENTRY NTAPI ExInterlockedRemoveHeadList(IN OUT PLIST_ENTRY ListHead, IN OUT PKSPIN_LOCK Lock)
#define IoCompleteRequest
#define STREAM_DATA_OFFSET
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
#define InterlockedExchangeAdd
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct KSSTREAM_DATA * PKSSTREAM_DATA
_Must_inspect_result_ _In_ ULONG Flags
CIrpQueue(IUnknown *OuterUnknown)
#define NT_SUCCESS(StatCode)
PKSSTREAM_HEADER CurStreamHeader
_In_ WDFCOLLECTION _In_ ULONG Index
#define KeAcquireSpinLock(sl, irql)
STDMETHODIMP_(ULONG) Release()
#define STATUS_UNSUCCESSFUL
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
#define InterlockedDecrement
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
_In_ ULONG _In_ ULONG Offset
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
#define InterlockedIncrement
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
#define InitializeListHead(ListHead)
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)
#define KeReleaseSpinLock(sl, irql)
static ULONG WINAPI AddRef(IStream *iface)
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
STDMETHODIMP_(ULONG) AddRef()
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
PHYSICAL_ADDRESS NTAPI MmGetPhysicalAddress(IN PVOID Address)
NTSTATUS NTAPI NewIrpQueue(IN IIrpQueue **Queue)
struct StreamData StreamData
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
ULONG m_TagSupportEnabled
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
volatile ULONG m_NumDataAvailable