79 DPRINT(
"IServiceSink_fnQueryInterface entered\n");
95 CPortPinWaveRT::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);
290 switch (IoStack->
Parameters.DeviceIoControl.IoControlCode)
305 case IOCTL_KS_HANDSHAKE:
328 Irp->IoStatus.Information = 0;
370 ISubdevice *ISubDevice;
386 Status =
This->m_Port->QueryInterface(IID_ISubdevice, (
PVOID*)&ISubDevice);
392 Descriptor->Factory.Instances[
This->m_ConnectDetails->PinId].CurrentPinInstanceCount--;
403 if (
This->m_IrpQueue)
405 This->m_IrpQueue->Release();
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;
485 CPortPinWaveRT::QuerySecurity(
494 CPortPinWaveRT::SetSecurity(
503 CPortPinWaveRT::FastDeviceIoControl(
519 CPortPinWaveRT::FastRead(
534 CPortPinWaveRT::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)
KSDDKAPI NTSTATUS NTAPI KsDefaultDeviceIoCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define KeGetCurrentIrql()
IPortWaveRTStream * PPORTWAVERTSTREAM
#define IOCTL_KS_PROPERTY
IPortWaveRT * PPORTWAVERT
#define IOCTL_KS_WRITE_STREAM
#define IOCTL_KS_DISABLE_EVENT
#define STATUS_INSUFFICIENT_RESOURCES
_In_ ULONG _In_ ULONG _In_ ULONG Length
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
KSPIN_DESCRIPTOR * m_KsPinDescriptor
PMINIPORTWAVERT m_Miniport
#define STATUS_INVALID_PARAMETER
#define IOCTL_KS_READ_STREAM
_In_ WDFDPC _In_ BOOLEAN Wait
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
IMiniportWaveRTStream * PMINIPORTWAVERTSTREAM
NTSTATUS NewPortWaveRTStream(PPORTWAVERTSTREAM *OutStream)
_In_ ULONG _In_ ULONG State
CPortPinWaveRT(IUnknown *OuterUnknown)
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
BOOL Init(PUSERCONNECT UserCon)
NTSTATUS NTAPI HandleKsProperty(IN PIRP Irp)
static BOOL Write(PBYTE Address, PBYTE Data, SIZE_T Size)
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)
PIO_WORKITEM NTAPI IoAllocateWorkItem(IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI IoFreeWorkItem(IN PIO_WORKITEM IoWorkItem)
#define KSPROPERTY_TYPE_GET
#define KSPROPSETID_Connection
IMiniportWaveRT * PMINIPORTWAVERT
#define RtlMoveMemory(Destination, Source, Length)
#define IOCTL_KS_RESET_STATE
#define STATUS_BUFFER_TOO_SMALL
#define IsEqualGUIDAligned(guid1, guid2)
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_In_ PDEVICE_OBJECT DeviceObject
return STATUS_NOT_IMPLEMENTED
VOID FreeItem(IN PVOID Item)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
DECLSPEC_NORETURN VOID NTAPI KeBugCheck(ULONG BugCheckCode)
MEMORY_CACHING_TYPE m_CacheType
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
#define IoCompleteRequest
IPortFilterWaveRT * PPORTFILTERWAVERT
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
PPORTWAVERTSTREAM m_PortStream
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define NT_SUCCESS(StatCode)
friend VOID NTAPI SetStreamWorkerRoutine(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context)
friend VOID NTAPI CloseStreamRoutine(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context)
IPortFilterWaveRT * m_Filter
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
VOID NTAPI IoFreeMdl(PMDL Mdl)
ULONG m_CommonBufferOffset
#define STATUS_UNSUCCESSFUL
VOID NTAPI CloseStreamRoutine(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context)
#define IOCTL_KS_ENABLE_EVENT
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
NTSTATUS NewPortPinWaveRT(OUT IPortPinWaveRT **OutPin)
VOID NTAPI IoQueueWorkItem(IN PIO_WORKITEM IoWorkItem, IN PIO_WORKITEM_ROUTINE WorkerRoutine, IN WORK_QUEUE_TYPE QueueType, IN PVOID Context)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
virtual ~CPortPinWaveRT()
PMINIPORTWAVERTSTREAM m_Stream
_In_ PFCB _In_ LONGLONG FileOffset
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
KSPIN_CONNECT * m_ConnectDetails
PMINIPORTWAVERT GetWaveRTMiniport(IN IPortWaveRT *iface)
NTSTATUS NTAPI HandleKsStream(IN PIRP Irp)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
struct CLOSESTREAM_CONTEXT * PCLOSESTREAM_CONTEXT
IPortPinWaveRT * PPORTPINWAVERT
char * cleanup(char *str)
struct KSIDENTIFIER * PKSPROPERTY
NTSTATUS NTAPI NewIrpQueue(IN IIrpQueue **Queue)
struct SETSTREAM_CONTEXT * PSETSTREAM_CONTEXT
_Must_inspect_result_ _In_ PWDF_WORKITEM_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWORKITEM * WorkItem
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
#define UNIMPLEMENTED_ONCE
enum _MEMORY_CACHING_TYPE MEMORY_CACHING_TYPE
VOID NTAPI SetStreamState(IN KSSTATE State)
#define KSPROPERTY_TYPE_SET
_Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING Stream
VOID NTAPI KeStallExecutionProcessor(IN ULONG MicroSeconds)
#define Int32x32To64(a, b)
#define RtlCompareMemory(s1, s2, l)
KSDATAFORMAT * PKSDATAFORMAT
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)