79 sizeof(PinWavePciConnectionSet) /
sizeof(KSPROPERTY_ITEM),
80 (
const KSPROPERTY_ITEM*)&PinWavePciConnectionSet,
86 sizeof(PinWavePciAudioSet) /
sizeof(KSPROPERTY_ITEM),
87 (
const KSPROPERTY_ITEM*)&PinWavePciAudioSet,
157 DPRINT(
"Play %lu Record %lu\n",
Pin->m_Position.PlayOffset,
Pin->m_Position.WriteOffset);
176 PVOID FirstTag, LastTag;
177 ULONG MappingsRevoked;
208 Pin->m_IrpQueue->CancelBuffers();
209 while(
Pin->m_IrpQueue->GetAcquiredTagRange(&FirstTag, &LastTag))
211 Status =
Pin->m_Stream->RevokeMappings(FirstTag, LastTag, &MappingsRevoked);
212 DPRINT(
"RevokeMappings Status %lx MappingsRevoked: %lu\n",
Status, MappingsRevoked);
215 Pin->m_Position.PlayOffset = 0;
216 Pin->m_Position.WriteOffset = 0;
220 Pin->m_IrpQueue->CancelBuffers();
221 while(
Pin->m_IrpQueue->GetAcquiredTagRange(&FirstTag, &LastTag))
223 Status =
Pin->m_Stream->RevokeMappings(FirstTag, LastTag, &MappingsRevoked);
224 DPRINT(
"RevokeMappings Status %lx MappingsRevoked: %lu\n",
Status, MappingsRevoked);
227 Pin->m_Position.PlayOffset = 0;
228 Pin->m_Position.WriteOffset = 0;
311 Status =
Pin->m_Stream->SetFormat(NewDataFormat);
318 Pin->m_Format = NewDataFormat;
350 Irp->IoStatus.Information =
Pin->m_Format->FormatSize;
356 Irp->IoStatus.Information =
Pin->m_Format->FormatSize;
403CPortPinWavePci::GetMapping(
417CPortPinWavePci::ReleaseMapping(
427CPortPinWavePci::TerminatePacket()
436CPortPinWavePci::RequestService()
452CPortPinWavePci::NewIrpTarget(
453 OUT struct IIrpTarget **OutTarget,
459 IN KSOBJECT_CREATE *CreateObject)
463 Irp->IoStatus.Information = 0;
549CPortPinWavePci::DeviceIoControl(
568 Irp->IoStatus.Information = 0;
577CPortPinWavePci::Read(
586CPortPinWavePci::Write(
595CPortPinWavePci::Flush(
604CPortPinWavePci::Close(
648 DPRINT(
"Warning: failed to stop stream with %x\n",
Status);
687 Irp->IoStatus.Information = 0;
695CPortPinWavePci::QuerySecurity(
704CPortPinWavePci::SetSecurity(
713CPortPinWavePci::FastDeviceIoControl(
729CPortPinWavePci::FastRead(
744CPortPinWavePci::FastWrite(
759CPortPinWavePci::Init(
763 IN KSPIN_DESCRIPTOR * KsPinDescriptor,
769 ISubdevice * Subdevice =
NULL;
785 DPRINT(
"Unexpected Communication %u DataFlow %u\n", KsPinDescriptor->Communication, KsPinDescriptor->DataFlow);
804 DPRINT(
"IPortPinWavePci_fnInit entered\n");
833 ConnectDetails->PinId,
863 DPRINT(
"OptionFlags %x RequirementsFlag %x PoolType %x Frames %lu FrameSize %lu FileAlignment %lu\n",
907 Status = Subdevice->GetDescriptor(&SubDeviceDescriptor);
955CPortPinWavePci::GetIrpStream()
962CPortPinWavePci::GetMiniport()
969 OUT IPortPinWavePci ** OutPin)
980 *OutPin = (IPortPinWavePci*)
This;
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define InterlockedIncrement
struct SUBDEVICE_DESCRIPTOR * PSUBDEVICE_DESCRIPTOR
IPortPinWavePci * PPORTPINWAVEPCI
IPortFilterWavePci * PPORTFILTERWAVEPCI
_In_ PFCB _In_ LONGLONG FileOffset
KSPIN_DESCRIPTOR * m_KsPinDescriptor
IPortFilterWavePci * m_Filter
CPortPinWavePci(IUnknown *OuterUnknown)
friend NTSTATUS NTAPI PinWavePciAllocatorFraming(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
KSPIN_CONNECT * m_ConnectDetails
friend NTSTATUS NTAPI PinWavePciState(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
KSAUDIO_POSITION m_Position
NTSTATUS NTAPI HandleKsStream(IN PIRP Irp)
PSERVICEGROUP m_ServiceGroup
PMINIPORTWAVEPCISTREAM m_Stream
friend NTSTATUS NTAPI PinWavePciDataFormat(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
virtual ~CPortPinWavePci()
SUBDEVICE_DESCRIPTOR m_Descriptor
NTSTATUS NTAPI HandleKsProperty(IN PIRP Irp)
friend NTSTATUS NTAPI PinWavePciAudioPosition(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
PMINIPORTWAVEPCI m_Miniport
PDEVICE_OBJECT m_DeviceObject
KSALLOCATOR_FRAMING m_AllocatorFraming
KSDATAFORMAT * PKSDATAFORMAT
#define NT_SUCCESS(StatCode)
KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
#define DEFINE_KSPROPERTY_CONNECTIONSET(PinSet, PropStateHandler, PropDataFormatHandler, PropAllocatorFraming)
#define KSPROPERTY_TYPE_SET
#define KSPROPERTY_TYPE_GET
#define RtlCompareMemory(s1, s2, l)
#define KeGetCurrentIrql()
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
NTSYSAPI void WINAPI DbgBreakPoint(void)
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
NTSTATUS NTAPI NewIrpQueue(IN IIrpQueue **Queue)
#define IOCTL_KS_PROPERTY
#define KSPROPSETID_Connection
@ KSPIN_COMMUNICATION_SINK
#define IOCTL_KS_READ_STREAM
@ KSINTERFACE_STANDARD_LOOPED_STREAMING
#define IOCTL_KS_WRITE_STREAM
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)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IoCompleteRequest
#define STATUS_NOT_SUPPORTED
NTSTATUS NewPortPinWavePci(OUT IPortPinWavePci **OutPin)
NTSTATUS NTAPI PinWavePciAllocatorFraming(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
NTSTATUS NTAPI PinWavePciState(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
NTSTATUS NTAPI PinWavePciDataFormat(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
struct SETSTREAM_CONTEXT * PSETSTREAM_CONTEXT
NTSTATUS NTAPI PinWavePciAudioPosition(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
KSPROPERTY_SET PinWavePciPropertySet[]
PMINIPORTWAVEPCI GetWavePciMiniport(PPORTWAVEPCI iface)
IDmaChannel * PDMACHANNEL
IServiceSink * PSERVICESINK
IMiniportWavePciStream * PMINIPORTWAVEPCISTREAM
IPortWavePciStream * PPORTWAVEPCISTREAM
IMiniportWavePci * PMINIPORTWAVEPCI
IServiceGroup * PSERVICEGROUP
IPortWavePci * PPORTWAVEPCI
#define PC_ASSERT_IRQL(x)
#define DEFINE_KSPROPERTY_AUDIOSET(PinSet, PropPositionHandler)
NTSTATUS NTAPI PcHandlePropertyWithTable(IN PIRP Irp, IN ULONG PropertySetCount, IN PKSPROPERTY_SET PropertySet, IN PSUBDEVICE_DESCRIPTOR Descriptor)
PPCFILTER_DESCRIPTOR DeviceDescriptor
PKSPROPERTY_SET FilterPropertySet
ULONG FilterPropertySetCount
struct _IO_STACK_LOCATION::@1575::@1576 DeviceIoControl
union _IO_STACK_LOCATION::@1575 Parameters
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define STATUS_UNSUCCESSFUL
#define STATUS_MORE_ENTRIES
#define STATUS_INSUFFICIENT_RESOURCES
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
_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)
_Must_inspect_result_ _In_ ULONG Flags
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount