7 #ifndef PORTCLS_PRIVATE_H 8 #define PORTCLS_PRIVATE_H 13 #define PC_IMPLEMENTATION 14 #define COM_STDMETHOD_CAN_THROW 24 #define TAG_PORTCLASS 'SLCP' 26 #define PC_ASSERT(exp) \ 28 RtlAssert((PVOID) #exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE) 30 #define PC_ASSERT_IRQL(x) PC_ASSERT(KeGetCurrentIrql() <= (x)) 31 #define PC_ASSERT_IRQL_EQUAL(x) PC_ASSERT(KeGetCurrentIrql()==(x)) 108 OUT IPortFilterWaveCyclic ** OutFilter);
112 OUT IPortPinWaveCyclic ** OutPin);
116 OUT IPortFilterWavePci ** OutFilter);
120 OUT IPortPinWavePci ** OutPin);
124 IPortWavePci* iface);
128 IPortWavePci* iface);
146 IN IPortDMus * iface,
150 #if (NTDDI_VERSION >= NTDDI_VISTA) 154 OUT IPortFilterWaveRT ** OutFilter);
158 OUT IPortPinWaveRT ** OutPin);
162 IN IPortWaveRT* iface);
182 OUT IPortFilterTopology ** OutFilter);
193 IN ULONG ObjectCreateItemCount,
194 IN PKSOBJECT_CREATE_ITEM ObjectCreateItem);
198 IN IPortWaveCyclic* iface);
270 IN ULONG FilterPropertiesCount,
271 IN KSPROPERTY_SET * FilterProperties,
275 IN KSPROPERTY_SET * PinProperties,
277 IN KSEVENT_SET * EventSet,
297 IPortWaveCyclic* iface);
320 IN PKSPROPERTY_SET PropertySet,
340 #define DEFINE_KSPROPERTY_CONNECTIONSET(PinSet,\ 341 PropStateHandler, PropDataFormatHandler, PropAllocatorFraming)\ 342 DEFINE_KSPROPERTY_TABLE(PinSet) {\ 343 DEFINE_KSPROPERTY_ITEM_CONNECTION_STATE(PropStateHandler, PropStateHandler),\ 344 DEFINE_KSPROPERTY_ITEM_CONNECTION_DATAFORMAT(PropDataFormatHandler, PropDataFormatHandler),\ 345 DEFINE_KSPROPERTY_ITEM_CONNECTION_ALLOCATORFRAMING(PropAllocatorFraming)\ 348 #define DEFINE_KSPROPERTY_ITEM_AUDIO_POSITION(GetHandler, SetHandler)\ 349 DEFINE_KSPROPERTY_ITEM(\ 350 KSPROPERTY_AUDIO_POSITION,\ 353 sizeof(KSAUDIO_POSITION),\ 355 NULL, 0, NULL, NULL, 0) 357 #define DEFINE_KSPROPERTY_AUDIOSET(PinSet,\ 358 PropPositionHandler)\ 359 DEFINE_KSPROPERTY_TABLE(PinSet) {\ 360 DEFINE_KSPROPERTY_ITEM_AUDIO_POSITION(PropPositionHandler, PropPositionHandler)\ 364 #define DEFINE_KSPROPERTY_ITEM_DRMAUDIOSTREAM_CONTENTID(SetHandler)\ 365 DEFINE_KSPROPERTY_ITEM(\ 366 KSPROPERTY_DRMAUDIOSTREAM_CONTENTID,\ 371 NULL, 0, NULL, NULL, 0) 373 #define DEFINE_KSPROPERTY_DRMSET(PinSet,\ 374 PropPositionHandler)\ 375 DEFINE_KSPROPERTY_TABLE(PinSet) {\ 376 DEFINE_KSPROPERTY_ITEM_DRMAUDIOSTREAM_CONTENTID(PropPositionHandler)\ 379 #define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet,\ 380 PropGeneral, PropInstances, PropIntersection)\ 381 DEFINE_KSPROPERTY_TABLE(PinSet) {\ 382 DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\ 383 DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\ 384 DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\ 385 DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\ 386 DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\ 387 DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\ 388 DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\ 389 DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\ 390 DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(PropGeneral),\ 391 DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(PropGeneral),\ 392 DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(PropGeneral),\ 393 DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\ 394 DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\ 395 DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral),\ 396 DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(PropGeneral)\ 442 template<
typename... Interfaces>
PDEVICE_OBJECT PrevDeviceObject
IPortWaveRTStream * PPORTWAVERTSTREAM
NTSTATUS NewPortFilterWaveRT(OUT IPortFilterWaveRT **OutFilter)
PDEVICE_OBJECT GetDeviceObjectFromPortWaveRT(IPortWaveRT *iface)
NTSTATUS NTAPI PinPropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
_Must_inspect_result_ typedef _In_ PVOID Unused
NTSTATUS NTAPI PortClsSysControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI PcHandlePropertyWithTable(IN PIRP Irp, IN ULONG PropertySetCount, IN PKSPROPERTY_SET PropertySet, IN PSUBDEVICE_DESCRIPTOR Descriptor)
IPortFilterDMus * PPORTFILTERDMUS
NTSTATUS NewPortFilterWavePci(OUT IPortFilterWavePci **OutFilter)
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
NTSTATUS NewPortDMus(OUT PPORT *OutPort)
struct TIMER_CONTEXT * PTIMER_CONTEXT
_In_ PKSPIN_CONNECT Connect
IPortTopology * PPORTTOPOLOGY
IMiniportTopology * PMINIPORTTOPOLOGY
NTSTATUS NewPortFilterDMus(OUT PPORTFILTERDMUS *OutFilter)
NTSTATUS NewMiniportDMusUART(OUT PMINIPORT *OutMiniport, IN REFCLSID ClassId)
struct PCLASS_DEVICE_EXTENSION * PPCLASS_DEVICE_EXTENSION
_Must_inspect_result_ _In_ WDFDEVICE _In_ PIRP _In_ WDFQUEUE Queue
IPortPinDMus * PPORTPINDMUS
PDEVICE_OBJECT GetDeviceObject(IPortWaveCyclic *iface)
PIO_TIMER_ROUTINE pTimerRoutine
IResourceList * resources
NTSTATUS NewPortPinWaveCyclic(OUT IPortPinWaveCyclic **OutPin)
static GUID InterfaceGuids[3]
enum _DMA_WIDTH DMA_WIDTH
VOID FreeItem(IN PVOID Item, IN ULONG Tag)
IN PVOID IN PVOID IN USHORT IN USHORT Size
NTSTATUS NewPortWaveRTStream(PPORTWAVERTSTREAM *OutStream)
IUnregisterSubdevice * PUNREGISTERSUBDEVICE
PCPFNSTARTDEVICE StartDevice
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
NTSTATUS NewPortPinWaveRT(OUT IPortPinWaveRT **OutPin)
enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE
VOID GetDMusMiniport(IN IPortDMus *iface, IN PMINIPORTDMUS *Miniport, IN PMINIPORTMIDI *MidiMiniport)
IMiniportWaveRT * PMINIPORTWAVERT
struct _CLASS_DEVICE_EXTENSION * PCLASS_DEVICE_EXTENSION
NTSTATUS NTAPI PcCreateItemDispatch(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING DeviceDescription
DEVICE_POWER_STATE DevicePowerState
PDEVICE_OBJECT GetDeviceObjectFromPortWavePci(IPortWavePci *iface)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
NTSTATUS NTAPI NewDispatchObject(IN PIRP Irp, IN IIrpTarget *Target, IN ULONG ObjectCreateItemCount, IN PKSOBJECT_CREATE_ITEM ObjectCreateItem)
STDMETHODIMP_(ULONG) Release()
NTSTATUS NewPortWaveCyclic(OUT PPORT *OutPort)
NTSTATUS NTAPI PcHandleDisableEventWithTable(IN PIRP Irp, IN PSUBDEVICE_DESCRIPTOR Descriptor)
PMINIPORTWAVECYCLIC GetWaveCyclicMiniport(IN IPortWaveCyclic *iface)
NTSTATUS NTAPI PcDmaSlaveDescription(IN PRESOURCELIST ResourceList OPTIONAL, IN ULONG DmaIndex, IN BOOLEAN DemandMode, IN BOOLEAN AutoInitialize, IN DMA_SPEED DmaSpeed, IN ULONG MaximumLength, IN ULONG DmaPort, OUT PDEVICE_DESCRIPTION DeviceDescription)
NTSTATUS NTAPI PortClsPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PMINIPORTTOPOLOGY GetTopologyMiniport(PPORTTOPOLOGY Port)
_In_ BOOLEAN Dma64BitAddresses
NTSTATUS NTAPI PcCreateSubdeviceDescriptor(OUT SUBDEVICE_DESCRIPTOR **OutSubdeviceDescriptor, IN ULONG InterfaceCount, IN GUID *InterfaceGuids, IN ULONG IdentifierCount, IN KSIDENTIFIER *Identifier, IN ULONG FilterPropertiesCount, IN KSPROPERTY_SET *FilterProperties, IN ULONG Unknown1, IN ULONG Unknown2, IN ULONG PinPropertiesCount, IN KSPROPERTY_SET *PinProperties, IN ULONG EventSetCount, IN KSEVENT_SET *EventSet, IN PPCFILTER_DESCRIPTOR FilterDescription)
IMiniportWavePci * PMINIPORTWAVEPCI
NTSTATUS NTAPI NewIUnregisterPhysicalConnection(OUT PUNREGISTERPHYSICALCONNECTION *OutConnection)
IUnregisterPhysicalConnection * PUNREGISTERPHYSICALCONNECTION
NTSTATUS(NTAPI * PCPFNSTARTDEVICE)(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PRESOURCELIST ResourceList)
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
struct DISPATCH_CONTEXT * PDISPATCH_CONTEXT
KSDEVICE_HEADER KsDeviceHeader
NTSTATUS NTAPI PortClsPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
_In_ WDFDMATRANSACTION _In_ size_t MaximumLength
PDEVICE_OBJECT PhysicalDeviceObject
NTSTATUS NewPortWaveRT(OUT PPORT *OutPort)
NTSTATUS NTAPI TopologyPropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
PDEVICE_OBJECT GetDeviceObjectFromWaveCyclic(IPortWavePci *iface)
#define InterlockedDecrement
NTSTATUS NewPortWavePci(OUT PPORT *OutPort)
NTSTATUS NTAPI NewIUnregisterSubdevice(OUT PUNREGISTERSUBDEVICE *OutDevice)
NTSTATUS NewIDrmPort(OUT PDRMPORT2 *OutPort)
NTSTATUS NTAPI NewIrpQueue(IN IIrpQueue **Queue)
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
enum _DMA_SPEED DMA_SPEED
IResourceList * PRESOURCELIST
PMINIPORTWAVEPCI GetWavePciMiniport(PPORTWAVEPCI Port)
KSOBJECT_CREATE_ITEM * CreateItems
NTSTATUS NewPortTopology(OUT PPORT *OutPort)
IMiniportWaveCyclic * PMINIPORTWAVECYCLIC
IAdapterPowerManagement * AdapterPowerManagement
#define InterlockedIncrement
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag)
NTSTATUS NTAPI PcValidateConnectRequest(IN PIRP Irp, IN KSPIN_FACTORY *Descriptor, OUT PKSPIN_CONNECT *Connect)
NTSTATUS NewPortClsVersion(OUT PPORTCLSVERSION *OutVersion)
IMiniportDMus * PMINIPORTDMUS
IPortWavePci * PPORTWAVEPCI
NTSTATUS NTAPI PortClsCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
IIrpTarget *NTAPI KsoGetIrpTargetFromIrp(PIRP Irp)
IMiniportMidi * PMINIPORTMIDI
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
NTSTATUS NewPortFilterTopology(OUT IPortFilterTopology **OutFilter)
_In_ struct _IRP _In_ struct _SCATTER_GATHER_LIST * ScatterGather
VOID NTAPI PcIoTimerRoutine(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context)
NTSTATUS NTAPI PcDmaMasterDescription(IN PRESOURCELIST ResourceList OPTIONAL, IN BOOLEAN ScatterGather, IN BOOLEAN Dma32BitAddresses, IN BOOLEAN IgnoreCount, IN BOOLEAN Dma64BitAddresses, IN DMA_WIDTH DmaWidth, IN DMA_SPEED DmaSpeed, IN ULONG MaximumLength, IN ULONG DmaPort, OUT PDEVICE_DESCRIPTION DeviceDescription)
NTSTATUS NewMiniportFmSynth(OUT PMINIPORT *OutMiniport, IN REFCLSID ClassId)
static ULONG WINAPI AddRef(IStream *iface)
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
SYSTEM_POWER_STATE SystemPowerState
NTSTATUS NewPortPinDMus(OUT PPORTPINDMUS *OutPin)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
struct CLOSESTREAM_CONTEXT * PCLOSESTREAM_CONTEXT
STDMETHODIMP_(ULONG) AddRef()
IO_TIMER_ROUTINE * PIO_TIMER_ROUTINE
KSOBJECT_HEADER ObjectHeader
NTSTATUS NewPortPinWavePci(OUT IPortPinWavePci **OutPin)
PMINIPORTWAVERT GetWaveRTMiniport(IN IPortWaveRT *iface)
NTSTATUS NewPortFilterWaveCyclic(OUT IPortFilterWaveCyclic **OutFilter)
PKSOBJECT_CREATE_ITEM CreateItem
NTSTATUS NTAPI PcHandleEnableEventWithTable(IN PIRP Irp, IN PSUBDEVICE_DESCRIPTOR Descriptor)
PULONG MinorVersion OPTIONAL
IPortClsVersion * PPORTCLSVERSION