82 sizeof(PinWavePciConnectionSet) /
sizeof(KSPROPERTY_ITEM),
83 (
const KSPROPERTY_ITEM*)&PinWavePciConnectionSet,
89 sizeof(PinWavePciAudioSet) /
sizeof(KSPROPERTY_ITEM),
90 (
const KSPROPERTY_ITEM*)&PinWavePciAudioSet,
162 DPRINT(
"Play %lu Record %lu\n",
Pin->m_Position.PlayOffset,
Pin->m_Position.WriteOffset);
182 PVOID FirstTag, LastTag;
183 ULONG MappingsRevoked;
214 Pin->m_IrpQueue->CancelBuffers();
215 while(
Pin->m_IrpQueue->GetAcquiredTagRange(&FirstTag, &LastTag))
217 Status =
Pin->m_Stream->RevokeMappings(FirstTag, LastTag, &MappingsRevoked);
218 DPRINT(
"RevokeMappings Status %lx MappingsRevoked: %lu\n",
Status, MappingsRevoked);
221 Pin->m_Position.PlayOffset = 0;
222 Pin->m_Position.WriteOffset = 0;
226 Pin->m_IrpQueue->CancelBuffers();
227 while(
Pin->m_IrpQueue->GetAcquiredTagRange(&FirstTag, &LastTag))
229 Status =
Pin->m_Stream->RevokeMappings(FirstTag, LastTag, &MappingsRevoked);
230 DPRINT(
"RevokeMappings Status %lx MappingsRevoked: %lu\n",
Status, MappingsRevoked);
233 Pin->m_Position.PlayOffset = 0;
234 Pin->m_Position.WriteOffset = 0;
317 Status =
Pin->m_Stream->SetFormat(NewDataFormat);
324 Pin->m_Format = NewDataFormat;
355 if (
Pin->m_Format->FormatSize > IoStack->
Parameters.DeviceIoControl.OutputBufferLength)
358 Irp->IoStatus.Information =
Pin->m_Format->FormatSize;
364 Irp->IoStatus.Information =
Pin->m_Format->FormatSize;
412 CPortPinWavePci::GetMapping(
426 CPortPinWavePci::ReleaseMapping(
436 CPortPinWavePci::TerminatePacket()
446 CPortPinWavePci::RequestService()
462 CPortPinWavePci::NewIrpTarget(
463 OUT struct IIrpTarget **OutTarget,
469 IN KSOBJECT_CREATE *CreateObject)
473 Irp->IoStatus.Information = 0;
579 Irp->IoStatus.Information = 0;
660 DPRINT(
"Warning: failed to stop stream with %x\n",
Status);
699 Irp->IoStatus.Information = 0;
707 CPortPinWavePci::QuerySecurity(
716 CPortPinWavePci::SetSecurity(
725 CPortPinWavePci::FastDeviceIoControl(
741 CPortPinWavePci::FastRead(
756 CPortPinWavePci::FastWrite(
776 IN KSPIN_DESCRIPTOR * KsPinDescriptor,
782 ISubdevice * Subdevice =
NULL;
798 DPRINT(
"Unexpected Communication %u DataFlow %u\n", KsPinDescriptor->Communication, KsPinDescriptor->DataFlow);
817 DPRINT(
"IPortPinWavePci_fnInit entered\n");
846 ConnectDetails->PinId,
876 DPRINT(
"OptionFlags %x RequirementsFlag %x PoolType %x Frames %lu FrameSize %lu FileAlignment %lu\n",
920 Status = Subdevice->GetDescriptor(&SubDeviceDescriptor);
969 CPortPinWavePci::GetIrpStream()
977 CPortPinWavePci::GetMiniport()
985 OUT IPortPinWavePci ** OutPin)
996 *OutPin = (IPortPinWavePci*)
This;
IPortFilterWavePci * PPORTFILTERWAVEPCI
#define KeGetCurrentIrql()
IServiceGroup * PSERVICEGROUP
#define IOCTL_KS_PROPERTY
return STATUS_NOT_SUPPORTED
IDmaChannel * PDMACHANNEL
#define IOCTL_KS_WRITE_STREAM
NTSTATUS NTAPI PcHandlePropertyWithTable(IN PIRP Irp, IN ULONG PropertySetCount, IN PKSPROPERTY_SET PropertySet, IN PSUBDEVICE_DESCRIPTOR Descriptor)
KSPIN_CONNECT * m_ConnectDetails
#define STATUS_INSUFFICIENT_RESOURCES
_In_ ULONG _In_ ULONG _In_ ULONG Length
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
friend NTSTATUS NTAPI PinWavePciAudioPosition(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
#define IOCTL_KS_READ_STREAM
friend NTSTATUS NTAPI PinWavePciAllocatorFraming(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
_In_ WDFDPC _In_ BOOLEAN Wait
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG _In_opt_ PVOID Data
IPortWavePciStream * PPORTWAVEPCISTREAM
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
_In_ ULONG _In_ ULONG State
friend NTSTATUS NTAPI PinWavePciDataFormat(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
ULONG FilterPropertySetCount
IN PVOID IN PVOID IN USHORT IN USHORT Size
IServiceSink * PSERVICESINK
KSALLOCATOR_FRAMING m_AllocatorFraming
KSPIN_DESCRIPTOR * m_KsPinDescriptor
DEFINE_KSPROPERTY_AUDIOSET(PinWavePciAudioSet, PinWavePciAudioPosition)
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
BOOL Init(PUSERCONNECT UserCon)
static BOOL Write(PBYTE Address, PBYTE Data, SIZE_T Size)
#define KSPROPERTY_TYPE_GET
#define KSPROPSETID_Connection
IMiniportWavePciStream * PMINIPORTWAVEPCISTREAM
#define RtlMoveMemory(Destination, Source, Length)
#define IsEqualGUIDAligned(guid1, guid2)
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_In_ PDEVICE_OBJECT DeviceObject
VOID FreeItem(IN PVOID Item)
PMINIPORTWAVEPCI GetWavePciMiniport(PPORTWAVEPCI iface)
PSERVICEGROUP m_ServiceGroup
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID NTAPI DbgBreakPoint(VOID)
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
#define IoCompleteRequest
NTSTATUS NTAPI PinWavePciAllocatorFraming(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
IMiniportWavePci * PMINIPORTWAVEPCI
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
virtual ~CPortPinWavePci()
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
NTSTATUS NTAPI PinWavePciDataFormat(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
PMINIPORTWAVEPCISTREAM m_Stream
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
NTSTATUS NTAPI HandleKsProperty(IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
_Must_inspect_result_ _In_ ULONG Flags
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
#define NT_SUCCESS(StatCode)
NTSTATUS NTAPI PinWavePciAudioPosition(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
struct SETSTREAM_CONTEXT * PSETSTREAM_CONTEXT
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
CPortPinWavePci(IUnknown *OuterUnknown)
SUBDEVICE_DESCRIPTOR m_Descriptor
#define STATUS_UNSUCCESSFUL
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
DEFINE_KSPROPERTY_CONNECTIONSET(PinWavePciConnectionSet, PinWavePciState, PinWavePciDataFormat, PinWavePciAllocatorFraming)
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
#define STATUS_MORE_ENTRIES
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
IPortFilterWavePci * m_Filter
PMINIPORTWAVEPCI m_Miniport
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
IPortPinWavePci * PPORTPINWAVEPCI
NTSTATUS NTAPI HandleKsStream(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)
#define InterlockedIncrement
NTSTATUS NewPortPinWavePci(OUT IPortPinWavePci **OutPin)
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
_In_ PFCB _In_ LONGLONG FileOffset
IPortWavePci * PPORTWAVEPCI
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
KSAUDIO_POSITION m_Position
friend NTSTATUS NTAPI PinWavePciState(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
#define RtlZeroMemory(Destination, Length)
PPCFILTER_DESCRIPTOR DeviceDescriptor
NTSTATUS NTAPI NewIrpQueue(IN IIrpQueue **Queue)
PKSPROPERTY_SET FilterPropertySet
PDEVICE_OBJECT m_DeviceObject
KSPROPERTY_SET PinWavePciPropertySet[]
_Must_inspect_result_ _In_ PWDF_WORKITEM_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWORKITEM * WorkItem
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
#define KSPROPERTY_TYPE_SET
struct SUBDEVICE_DESCRIPTOR * PSUBDEVICE_DESCRIPTOR
VOID NTAPI KeStallExecutionProcessor(IN ULONG MicroSeconds)
#define RtlCompareMemory(s1, s2, l)
#define PC_ASSERT_IRQL(x)
KSDATAFORMAT * PKSDATAFORMAT
NTSTATUS NTAPI PinWavePciState(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)