19 public IPortWavePciStream
102 sizeof(PinWavePciConnectionSet) /
sizeof(KSPROPERTY_ITEM),
103 (
const KSPROPERTY_ITEM*)&PinWavePciConnectionSet,
109 sizeof(PinWavePciAudioSet) /
sizeof(KSPROPERTY_ITEM),
110 (
const KSPROPERTY_ITEM*)&PinWavePciAudioSet,
182 DPRINT(
"Play %lu Record %lu\n",
Pin->m_Position.PlayOffset,
Pin->m_Position.WriteOffset);
202 PVOID FirstTag, LastTag;
203 ULONG MappingsRevoked;
234 Pin->m_IrpQueue->CancelBuffers();
235 while(
Pin->m_IrpQueue->GetAcquiredTagRange(&FirstTag, &LastTag))
237 Status =
Pin->m_Stream->RevokeMappings(FirstTag, LastTag, &MappingsRevoked);
238 DPRINT(
"RevokeMappings Status %lx MappingsRevoked: %lu\n",
Status, MappingsRevoked);
241 Pin->m_Position.PlayOffset = 0;
242 Pin->m_Position.WriteOffset = 0;
246 Pin->m_IrpQueue->CancelBuffers();
247 while(
Pin->m_IrpQueue->GetAcquiredTagRange(&FirstTag, &LastTag))
249 Status =
Pin->m_Stream->RevokeMappings(FirstTag, LastTag, &MappingsRevoked);
250 DPRINT(
"RevokeMappings Status %lx MappingsRevoked: %lu\n",
Status, MappingsRevoked);
253 Pin->m_Position.PlayOffset = 0;
254 Pin->m_Position.WriteOffset = 0;
337 Status =
Pin->m_Stream->SetFormat(NewDataFormat);
344 Pin->m_Format = NewDataFormat;
375 if (
Pin->m_Format->FormatSize > IoStack->
Parameters.DeviceIoControl.OutputBufferLength)
378 Irp->IoStatus.Information =
Pin->m_Format->FormatSize;
384 Irp->IoStatus.Information =
Pin->m_Format->FormatSize;
432 CPortPinWavePci::GetMapping(
446 CPortPinWavePci::ReleaseMapping(
456 CPortPinWavePci::TerminatePacket()
466 CPortPinWavePci::RequestService()
482 CPortPinWavePci::NewIrpTarget(
483 OUT struct IIrpTarget **OutTarget,
489 IN KSOBJECT_CREATE *CreateObject)
493 Irp->IoStatus.Information = 0;
602 Irp->IoStatus.Information = 0;
683 DPRINT(
"Warning: failed to stop stream with %x\n",
Status);
722 Irp->IoStatus.Information = 0;
730 CPortPinWavePci::QuerySecurity(
739 CPortPinWavePci::SetSecurity(
748 CPortPinWavePci::FastDeviceIoControl(
764 CPortPinWavePci::FastRead(
779 CPortPinWavePci::FastWrite(
799 IN KSPIN_DESCRIPTOR * KsPinDescriptor,
805 ISubdevice * Subdevice =
NULL;
821 DPRINT(
"Unexpected Communication %u DataFlow %u\n", KsPinDescriptor->Communication, KsPinDescriptor->DataFlow);
840 DPRINT(
"IPortPinWavePci_fnInit entered\n");
869 ConnectDetails->PinId,
899 DPRINT(
"OptionFlags %x RequirementsFlag %x PoolType %x Frames %lu FrameSize %lu FileAlignment %lu\n",
943 Status = Subdevice->GetDescriptor(&SubDeviceDescriptor);
992 CPortPinWavePci::GetIrpStream()
1000 CPortPinWavePci::GetMiniport()
1008 OUT IPortPinWavePci ** OutPin)
1019 *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)
_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
STDMETHODIMP_(ULONG) Release()
DEFINE_KSPROPERTY_CONNECTIONSET(PinWavePciConnectionSet, PinWavePciState, PinWavePciDataFormat, PinWavePciAllocatorFraming)
#define InterlockedDecrement
STDMETHODIMP_(ULONG) AddRef()
_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
static ULONG WINAPI AddRef(IStream *iface)
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)