7 #ifndef PORTCLS_PRIVATE_H
8 #define PORTCLS_PRIVATE_H
10 //#define _KS_NO_ANONYMOUS_STRUCTURES_
19 #include "interfaces.h"
26 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
27 #define TAG_PORTCLASS TAG('P', 'C', 'L', 'S')
34 #define ASSERT_IRQL(x) ASSERT(KeGetCurrentIrql() <= (x))
39 IN PDEVICE_OBJECT DeviceObject
,
45 IN PDEVICE_OBJECT DeviceObject
,
51 IN PDEVICE_OBJECT DeviceObject
,
57 IN PDEVICE_OBJECT DeviceObject
,
60 NTSTATUS
NewMiniportDMusUART(
61 OUT PMINIPORT
* OutMiniport
,
64 NTSTATUS
NewMiniportFmSynth(
65 OUT PMINIPORT
* OutMiniport
,
71 NTSTATUS
NewPortTopology(
74 NTSTATUS
NewPortWaveCyclic(
77 NTSTATUS
NewPortWavePci(
81 OUT PDRMPORT2
*OutPort
);
83 NTSTATUS
NewPortClsVersion(
84 OUT PPORTCLSVERSION
* OutVersion
);
86 NTSTATUS
NewPortFilterWaveCyclic(
87 OUT IPortFilterWaveCyclic
** OutFilter
);
89 NTSTATUS
NewPortPinWaveCyclic(
90 OUT IPortPinWaveCyclic
** OutPin
);
94 OUT IPortFilterWavePci
** OutFilter
);
96 NTSTATUS
NewPortPinWavePci(
97 OUT IPortPinWavePci
** OutPin
);
100 GetDeviceObjectFromWaveCyclic(
101 IPortWavePci
* iface
);
104 GetDeviceObjectFromPortWavePci(
105 IPortWavePci
* iface
);
113 OUT PPORTFILTERDMUS
* OutFilter
);
115 NTSTATUS
NewPortPinDMus(
116 OUT PPORTPINDMUS
* OutPin
);
120 IN IPortDMus
* iface
,
121 IN PMINIPORTDMUS
* Miniport
,
122 IN PMINIPORTMIDI
* MidiMiniport
);
124 #if (NTDDI_VERSION >= NTDDI_VISTA)
128 OUT IPortFilterWaveRT
** OutFilter
);
130 NTSTATUS
NewPortPinWaveRT(
131 OUT IPortPinWaveRT
** OutPin
);
135 IN IPortWaveRT
* iface
);
138 GetDeviceObjectFromPortWaveRT(
143 PPORTWAVERTSTREAM
*OutStream
);
153 NewPortFilterTopology(
154 OUT IPortFilterTopology
** OutFilter
);
164 IN IIrpTarget
* Target
,
168 GetWaveCyclicMiniport(
169 IN IPortWaveCyclic
* iface
);
173 IN POOL_TYPE PoolType
,
174 IN SIZE_T NumberOfBytes
,
185 IN IIrpQueue
**Queue
);
189 TopologyPropertyHandler(
191 IN PKSIDENTIFIER Request
,
198 IN PKSIDENTIFIER Request
,
203 PcDmaMasterDescription(
204 IN PRESOURCELIST ResourceList OPTIONAL
,
205 IN BOOLEAN ScatterGather
,
206 IN BOOLEAN Dma32BitAddresses
,
207 IN BOOLEAN IgnoreCount
,
208 IN BOOLEAN Dma64BitAddresses
,
209 IN DMA_WIDTH DmaWidth
,
210 IN DMA_SPEED DmaSpeed
,
211 IN ULONG MaximumLength
,
213 OUT PDEVICE_DESCRIPTION DeviceDescription
);
217 PcDmaSlaveDescription(
218 IN PRESOURCELIST ResourceList OPTIONAL
,
221 IN ULONG AutoInitialize
,
222 IN DMA_SPEED DmaSpeed
,
223 IN ULONG MaximumLength
,
225 OUT PDEVICE_DESCRIPTION DeviceDescription
);
229 PcCreateSubdeviceDescriptor(
230 OUT SUBDEVICE_DESCRIPTOR
** OutSubdeviceDescriptor
,
231 IN ULONG InterfaceCount
,
232 IN GUID
* InterfaceGuids
,
233 IN ULONG IdentifierCount
,
234 IN KSIDENTIFIER
*Identifier
,
235 IN ULONG FilterPropertiesCount
,
236 IN KSPROPERTY_SET
* FilterProperties
,
239 IN ULONG PinPropertiesCount
,
240 IN KSPROPERTY_SET
* PinProperties
,
241 IN ULONG EventSetCount
,
242 IN KSEVENT_SET
* EventSet
,
243 IN PPCFILTER_DESCRIPTOR FilterDescription
);
247 PcValidateConnectRequest(
249 IN KSPIN_FACTORY
* Descriptor
,
250 OUT PKSPIN_CONNECT
* Connect
);
254 PcCreateItemDispatch(
255 IN PDEVICE_OBJECT DeviceObject
,
262 IN PSUBDEVICE_DESCRIPTOR Descriptor
);
267 IN PFILE_OBJECT FileObject
,
268 IN PKSPROPERTY UNALIGNED Property
,
269 IN ULONG PropertyLength
,
270 IN OUT PVOID UNALIGNED Data
,
272 OUT PIO_STATUS_BLOCK IoStatus
,
273 IN ULONG PropertySetsCount
,
274 IN
const KSPROPERTY_SET
*PropertySet
,
275 IN PSUBDEVICE_DESCRIPTOR Descriptor
,
276 IN ISubdevice
*SubDevice
);
280 IPortWaveCyclic
* iface
);
284 IPortWavePciStream_GetIrpQueue(
285 IN IPortWavePciStream
*iface
);
289 NewIPortWavePciStream(
290 OUT PPORTWAVEPCISTREAM
*Stream
);
295 IN PDEVICE_OBJECT DeviceObject
,
298 #define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet,\
299 PropGeneral, PropInstances, PropIntersection)\
300 DEFINE_KSPROPERTY_TABLE(PinSet) {\
301 DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
302 DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
303 DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
304 DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
305 DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
306 DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
307 DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
308 DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
309 DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
310 DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
311 DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral),\
312 DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(PropGeneral)\
318 KSOBJECT_HEADER ObjectHeader
;
324 ISubdevice
* FromSubDevice
;
325 LPWSTR FromUnicodeString
;
327 ISubdevice
* ToSubDevice
;
328 LPWSTR ToUnicodeString
;
330 }PHYSICAL_CONNECTION
;
334 KSDEVICE_HEADER KsDeviceHeader
;
335 PDEVICE_OBJECT PhysicalDeviceObject
;
336 PDEVICE_OBJECT PrevDeviceObject
;
337 PCPFNSTARTDEVICE StartDevice
;
339 IAdapterPowerManagement
* AdapterPowerManagement
;
341 KSOBJECT_CREATE_ITEM
* CreateItems
;
343 IResourceList
* resources
;
344 LIST_ENTRY SubDeviceList
;
345 LIST_ENTRY PhysicalConnectionList
;
347 LIST_ENTRY TimerList
;
348 KSPIN_LOCK TimerListLock
;
350 } PCLASS_DEVICE_EXTENSION
, *PPCLASS_DEVICE_EXTENSION
;
355 KSSTREAM_HEADER Header
;
357 }CONTEXT_WRITE
, *PCONTEXT_WRITE
;
362 PIO_WORKITEM WorkItem
;
364 }CLOSESTREAM_CONTEXT
, *PCLOSESTREAM_CONTEXT
;
369 PIO_TIMER_ROUTINE pTimerRoutine
;
371 }TIMER_CONTEXT
, *PTIMER_CONTEXT
;