79 DPRINT(
"IServiceSink_fnQueryInterface entered\n");
95CPortPinWaveRT::NewIrpTarget(
96 OUT struct IIrpTarget **OutTarget,
102 IN KSOBJECT_CREATE *CreateObject)
120 DPRINT(
"IPortPinWave_HandleKsProperty entered\n");
124 Irp->IoStatus.Information = 0;
149 Irp->IoStatus.Information = 0;
191 Irp->IoStatus.Information = 0;
226 DPRINT(
"Failed to set format\n");
227 Irp->IoStatus.Information = 0;
237 Irp->IoStatus.Information = 0;
264 Irp->IoStatus.Information = 0;
274 DPRINT(
"IPortPinWaveRT_HandleKsStream entered State %u Stream %p is UNIMPLEMENTED\n",
m_State,
m_Stream);
281CPortPinWaveRT::DeviceIoControl(
290 switch (IoStack->
Parameters.DeviceIoControl.IoControlCode)
305 case IOCTL_KS_HANDSHAKE:
328 Irp->IoStatus.Information = 0;
346CPortPinWaveRT::Write(
355CPortPinWaveRT::Flush(
370 ISubdevice *ISubDevice;
386 Status =
This->m_Port->QueryInterface(IID_ISubdevice, (
PVOID*)&ISubDevice);
392 Descriptor->Factory.Instances[
This->m_ConnectDetails->PinId].CurrentPinInstanceCount--;
394 ISubDevice->Release();
403 if (
This->m_IrpQueue)
405 This->m_IrpQueue->Release();
430CPortPinWaveRT::Close(
441 DPRINT(
"Failed to allocate stream context\n");
448 DPRINT(
"Failed to allocate work item\n");
456 Irp->IoStatus.Information = 0;
465 Irp->IoStatus.Information = 0;
476 Irp->IoStatus.Information = 0;
485CPortPinWaveRT::QuerySecurity(
494CPortPinWaveRT::SetSecurity(
503CPortPinWaveRT::FastDeviceIoControl(
519CPortPinWaveRT::FastRead(
534CPortPinWaveRT::FastWrite(
553 IN KSPIN_DESCRIPTOR * KsPinDescriptor,
572 DPRINT(
"CPortPinWaveRT::Init entered\n");
608 DPRINT(
"Unexpected Communication %u DataFlow %u\n", KsPinDescriptor->Communication, KsPinDescriptor->DataFlow);
677 OUT IPortPinWaveRT ** OutPin)
IPortWaveRT * PPORTWAVERT
IPortPinWaveRT * PPORTPINWAVERT
IPortFilterWaveRT * PPORTFILTERWAVERT
VOID NTAPI KeStallExecutionProcessor(IN ULONG MicroSeconds)
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)
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)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define Int32x32To64(a, b)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IoCompleteRequest
#define STATUS_NOT_IMPLEMENTED
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 _NAMED_PIPE_CREATE_PARAMETERS * 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)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)
enum _MEMORY_CACHING_TYPE MEMORY_CACHING_TYPE