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;
412CPortPinWavePci::GetMapping(
426CPortPinWavePci::ReleaseMapping(
436CPortPinWavePci::TerminatePacket()
446CPortPinWavePci::RequestService()
462CPortPinWavePci::NewIrpTarget(
463 OUT struct IIrpTarget **OutTarget,
469 IN KSOBJECT_CREATE *CreateObject)
473 Irp->IoStatus.Information = 0;
560CPortPinWavePci::DeviceIoControl(
579 Irp->IoStatus.Information = 0;
588CPortPinWavePci::Read(
597CPortPinWavePci::Write(
606CPortPinWavePci::Flush(
615CPortPinWavePci::Close(
660 DPRINT(
"Warning: failed to stop stream with %x\n",
Status);
699 Irp->IoStatus.Information = 0;
707CPortPinWavePci::QuerySecurity(
716CPortPinWavePci::SetSecurity(
725CPortPinWavePci::FastDeviceIoControl(
741CPortPinWavePci::FastRead(
756CPortPinWavePci::FastWrite(
772CPortPinWavePci::Init(
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);
969CPortPinWavePci::GetIrpStream()
977CPortPinWavePci::GetMiniport()
985 OUT IPortPinWavePci ** OutPin)
996 *OutPin = (IPortPinWavePci*)
This;
#define InterlockedIncrement
struct SUBDEVICE_DESCRIPTOR * PSUBDEVICE_DESCRIPTOR
IPortPinWavePci * PPORTPINWAVEPCI
IPortFilterWavePci * PPORTFILTERWAVEPCI
VOID NTAPI KeStallExecutionProcessor(IN ULONG MicroSeconds)
_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)
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 _NAMED_PIPE_CREATE_PARAMETERS * 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
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount