75 DPRINT(
"IServiceSink_fnQueryInterface entered\n");
91CPortPinWaveRT::NewIrpTarget(
92 OUT struct IIrpTarget **OutTarget,
98 IN KSOBJECT_CREATE *CreateObject)
116 DPRINT(
"IPortPinWave_HandleKsProperty entered\n");
120 Irp->IoStatus.Information = 0;
145 Irp->IoStatus.Information = 0;
187 Irp->IoStatus.Information = 0;
222 DPRINT(
"Failed to set format\n");
223 Irp->IoStatus.Information = 0;
233 Irp->IoStatus.Information = 0;
260 Irp->IoStatus.Information = 0;
270 DPRINT(
"IPortPinWaveRT_HandleKsStream entered State %u Stream %p is UNIMPLEMENTED\n",
m_State,
m_Stream);
277CPortPinWaveRT::DeviceIoControl(
300 case IOCTL_KS_HANDSHAKE:
323 Irp->IoStatus.Information = 0;
341CPortPinWaveRT::Write(
350CPortPinWaveRT::Flush(
365 ISubdevice *ISubDevice;
381 Status =
This->m_Port->QueryInterface(IID_ISubdevice, (
PVOID*)&ISubDevice);
387 Descriptor->Factory.Instances[
This->m_ConnectDetails->PinId].CurrentPinInstanceCount--;
389 ISubDevice->Release();
398 if (
This->m_IrpQueue)
400 This->m_IrpQueue->Release();
425CPortPinWaveRT::Close(
436 DPRINT(
"Failed to allocate stream context\n");
443 DPRINT(
"Failed to allocate work item\n");
451 Irp->IoStatus.Information = 0;
460 Irp->IoStatus.Information = 0;
471 Irp->IoStatus.Information = 0;
480CPortPinWaveRT::QuerySecurity(
489CPortPinWaveRT::SetSecurity(
498CPortPinWaveRT::FastDeviceIoControl(
514CPortPinWaveRT::FastRead(
529CPortPinWaveRT::FastWrite(
548 IN KSPIN_DESCRIPTOR * KsPinDescriptor,
567 DPRINT(
"CPortPinWaveRT::Init entered\n");
603 DPRINT(
"Unexpected Communication %u DataFlow %u\n", KsPinDescriptor->Communication, KsPinDescriptor->DataFlow);
671 OUT IPortPinWaveRT ** OutPin)
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
IPortWaveRT * PPORTWAVERT
IPortPinWaveRT * PPORTPINWAVERT
IPortFilterWaveRT * PPORTFILTERWAVERT
DECLSPEC_NORETURN VOID NTAPI KeBugCheck(ULONG BugCheckCode)
_In_ PFCB _In_ LONGLONG FileOffset
PMINIPORTWAVERT m_Miniport
friend VOID NTAPI CloseStreamRoutine(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context)
PMINIPORTWAVERTSTREAM m_Stream
CPortPinWaveRT(IUnknown *OuterUnknown)
NTSTATUS NTAPI HandleKsStream(IN PIRP Irp)
virtual ~CPortPinWaveRT()
IPortFilterWaveRT * m_Filter
PPORTWAVERTSTREAM m_PortStream
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
ULONG m_CommonBufferOffset
MEMORY_CACHING_TYPE m_CacheType
VOID NTAPI SetStreamState(IN KSSTATE State)
KSPIN_DESCRIPTOR * m_KsPinDescriptor
KSPIN_CONNECT * m_ConnectDetails
friend VOID NTAPI SetStreamWorkerRoutine(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context)
NTSTATUS NTAPI HandleKsProperty(IN PIRP Irp)
#define STATUS_NOT_IMPLEMENTED
KSDATAFORMAT * PKSDATAFORMAT
#define NT_SUCCESS(StatCode)
static void cleanup(void)
KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsDefaultDeviceIoCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define KSPROPERTY_TYPE_SET
struct KSIDENTIFIER * PKSPROPERTY
#define KSPROPERTY_TYPE_GET
#define RtlCompareMemory(s1, s2, l)
#define KeGetCurrentIrql()
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
VOID NTAPI IoQueueWorkItem(IN PIO_WORKITEM IoWorkItem, IN PIO_WORKITEM_ROUTINE WorkerRoutine, IN WORK_QUEUE_TYPE QueueType, IN PVOID Context)
VOID NTAPI IoFreeWorkItem(IN PIO_WORKITEM IoWorkItem)
PIO_WORKITEM NTAPI IoAllocateWorkItem(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI NewIrpQueue(IN IIrpQueue **Queue)
@ KSPROPERTY_CONNECTION_DATAFORMAT
@ KSPROPERTY_CONNECTION_STATE
#define IOCTL_KS_RESET_STATE
#define IOCTL_KS_PROPERTY
#define KSPROPSETID_Connection
@ KSPIN_COMMUNICATION_SINK
#define IOCTL_KS_READ_STREAM
#define IOCTL_KS_ENABLE_EVENT
#define IOCTL_KS_WRITE_STREAM
#define IOCTL_KS_DISABLE_EVENT
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
VOID FreeItem(IN PVOID Item)
#define KeStallExecutionProcessor(MicroSeconds)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define Int32x32To64(a, b)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IoCompleteRequest
NTSTATUS NewPortPinWaveRT(OUT IPortPinWaveRT **OutPin)
VOID NTAPI CloseStreamRoutine(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context)
struct SETSTREAM_CONTEXT * PSETSTREAM_CONTEXT
PMINIPORTWAVERT GetWaveRTMiniport(IN IPortWaveRT *iface)
NTSTATUS NewPortWaveRTStream(PPORTWAVERTSTREAM *OutStream)
IMiniportWaveRT * PMINIPORTWAVERT
IMiniportWaveRTStream * PMINIPORTWAVERTSTREAM
IPortWaveRTStream * PPORTWAVERTSTREAM
struct CLOSESTREAM_CONTEXT * PCLOSESTREAM_CONTEXT
#define STATUS_BUFFER_TOO_SMALL
struct _IO_STACK_LOCATION::@1575::@1576 DeviceIoControl
union _IO_STACK_LOCATION::@1575 Parameters
#define UNIMPLEMENTED_ONCE
#define RtlMoveMemory(Destination, Source, Length)
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_In_ WDFDPC _In_ BOOLEAN Wait
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_Must_inspect_result_ _In_ PWDF_WORKITEM_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWORKITEM * WorkItem
#define IsEqualGUIDAligned(guid1, guid2)
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)
enum _MEMORY_CACHING_TYPE MEMORY_CACHING_TYPE