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
,
300 NewIUnregisterSubdevice(
301 OUT PUNREGISTERSUBDEVICE
*OutDevice
);
304 #define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet,\
305 PropGeneral, PropInstances, PropIntersection)\
306 DEFINE_KSPROPERTY_TABLE(PinSet) {\
307 DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
308 DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
309 DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
310 DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
311 DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
312 DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
313 DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
314 DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
315 DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
316 DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
317 DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral),\
318 DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(PropGeneral)\
324 UNICODE_STRING SymbolicLink
;
325 }SYMBOLICLINK_ENTRY
, *PSYMBOLICLINK_ENTRY
;
331 ISubdevice
*SubDevice
;
333 LIST_ENTRY SymbolicLinkList
;
334 }SUBDEVICE_ENTRY
, *PSUBDEVICE_ENTRY
;
339 ISubdevice
* FromSubDevice
;
340 LPWSTR FromUnicodeString
;
342 ISubdevice
* ToSubDevice
;
343 LPWSTR ToUnicodeString
;
345 }PHYSICAL_CONNECTION
;
349 KSDEVICE_HEADER KsDeviceHeader
;
350 PDEVICE_OBJECT PhysicalDeviceObject
;
351 PDEVICE_OBJECT PrevDeviceObject
;
352 PCPFNSTARTDEVICE StartDevice
;
354 IAdapterPowerManagement
* AdapterPowerManagement
;
356 KSOBJECT_CREATE_ITEM
* CreateItems
;
358 IResourceList
* resources
;
359 LIST_ENTRY SubDeviceList
;
360 LIST_ENTRY PhysicalConnectionList
;
362 LIST_ENTRY TimerList
;
363 KSPIN_LOCK TimerListLock
;
365 } PCLASS_DEVICE_EXTENSION
, *PPCLASS_DEVICE_EXTENSION
;
370 KSSTREAM_HEADER Header
;
372 }CONTEXT_WRITE
, *PCONTEXT_WRITE
;
377 PIO_WORKITEM WorkItem
;
379 }CLOSESTREAM_CONTEXT
, *PCLOSESTREAM_CONTEXT
;
384 PIO_TIMER_ROUTINE pTimerRoutine
;
386 }TIMER_CONTEXT
, *PTIMER_CONTEXT
;