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')
29 #define ASSERT_IRQL(x) ASSERT(KeGetCurrentIrql() <= (x))
34 IN PDEVICE_OBJECT DeviceObject
,
40 IN PDEVICE_OBJECT DeviceObject
,
46 IN PDEVICE_OBJECT DeviceObject
,
52 IN PDEVICE_OBJECT DeviceObject
,
55 NTSTATUS
NewMiniportDMusUART(
56 OUT PMINIPORT
* OutMiniport
,
59 NTSTATUS
NewMiniportFmSynth(
60 OUT PMINIPORT
* OutMiniport
,
66 NTSTATUS
NewPortTopology(
69 NTSTATUS
NewPortWaveCyclic(
72 NTSTATUS
NewPortWavePci(
76 OUT PDRMPORT2
*OutPort
);
78 NTSTATUS
NewPortClsVersion(
79 OUT PPORTCLSVERSION
* OutVersion
);
81 NTSTATUS
NewPortFilterWaveCyclic(
82 OUT IPortFilterWaveCyclic
** OutFilter
);
84 NTSTATUS
NewPortPinWaveCyclic(
85 OUT IPortPinWaveCyclic
** OutPin
);
89 OUT IPortFilterWavePci
** OutFilter
);
91 NTSTATUS
NewPortPinWavePci(
92 OUT IPortPinWavePci
** OutPin
);
95 GetDeviceObjectFromWaveCyclic(
99 GetDeviceObjectFromPortWavePci(
100 IPortWavePci
* iface
);
108 OUT PPORTFILTERDMUS
* OutFilter
);
110 NTSTATUS
NewPortPinDMus(
111 OUT PPORTPINDMUS
* OutPin
);
115 IN IPortDMus
* iface
,
116 IN PMINIPORTDMUS
* Miniport
,
117 IN PMINIPORTMIDI
* MidiMiniport
);
119 #if (NTDDI_VERSION >= NTDDI_VISTA)
123 OUT IPortFilterWaveRT
** OutFilter
);
125 NTSTATUS
NewPortPinWaveRT(
126 OUT IPortPinWaveRT
** OutPin
);
130 IN IPortWaveRT
* iface
);
133 GetDeviceObjectFromPortWaveRT(
138 PPORTWAVERTSTREAM
*OutStream
);
148 NewPortFilterTopology(
149 OUT IPortFilterTopology
** OutFilter
);
159 IN IIrpTarget
* Target
,
160 IN ULONG ObjectCreateItemCount
,
161 IN PKSOBJECT_CREATE_ITEM ObjectCreateItem
);
164 GetWaveCyclicMiniport(
165 IN IPortWaveCyclic
* iface
);
169 IN POOL_TYPE PoolType
,
170 IN SIZE_T NumberOfBytes
,
181 IN IIrpQueue
**Queue
);
185 TopologyPropertyHandler(
187 IN PKSIDENTIFIER Request
,
194 IN PKSIDENTIFIER Request
,
199 PcDmaMasterDescription(
200 IN PRESOURCELIST ResourceList OPTIONAL
,
201 IN BOOLEAN ScatterGather
,
202 IN BOOLEAN Dma32BitAddresses
,
203 IN BOOLEAN IgnoreCount
,
204 IN BOOLEAN Dma64BitAddresses
,
205 IN DMA_WIDTH DmaWidth
,
206 IN DMA_SPEED DmaSpeed
,
207 IN ULONG MaximumLength
,
209 OUT PDEVICE_DESCRIPTION DeviceDescription
);
213 PcDmaSlaveDescription(
214 IN PRESOURCELIST ResourceList OPTIONAL
,
217 IN ULONG AutoInitialize
,
218 IN DMA_SPEED DmaSpeed
,
219 IN ULONG MaximumLength
,
221 OUT PDEVICE_DESCRIPTION DeviceDescription
);
225 PcCreateSubdeviceDescriptor(
226 OUT SUBDEVICE_DESCRIPTOR
** OutSubdeviceDescriptor
,
227 IN ULONG InterfaceCount
,
228 IN GUID
* InterfaceGuids
,
229 IN ULONG IdentifierCount
,
230 IN KSIDENTIFIER
*Identifier
,
231 IN ULONG FilterPropertiesCount
,
232 IN KSPROPERTY_SET
* FilterProperties
,
235 IN ULONG PinPropertiesCount
,
236 IN KSPROPERTY_SET
* PinProperties
,
237 IN ULONG EventSetCount
,
238 IN KSEVENT_SET
* EventSet
,
239 IN PPCFILTER_DESCRIPTOR FilterDescription
);
243 PcValidateConnectRequest(
245 IN KSPIN_FACTORY
* Descriptor
,
246 OUT PKSPIN_CONNECT
* Connect
);
250 PcCreateItemDispatch(
251 IN PDEVICE_OBJECT DeviceObject
,
258 IN PSUBDEVICE_DESCRIPTOR Descriptor
);
263 IN PFILE_OBJECT FileObject
,
264 IN PKSPROPERTY UNALIGNED Property
,
265 IN ULONG PropertyLength
,
266 IN OUT PVOID UNALIGNED Data
,
268 OUT PIO_STATUS_BLOCK IoStatus
,
269 IN ULONG PropertySetsCount
,
270 IN
const KSPROPERTY_SET
*PropertySet
,
271 IN PSUBDEVICE_DESCRIPTOR Descriptor
,
272 IN ISubdevice
*SubDevice
);
276 IPortWaveCyclic
* iface
);
281 IN PDEVICE_OBJECT DeviceObject
,
286 NewIUnregisterSubdevice(
287 OUT PUNREGISTERSUBDEVICE
*OutDevice
);
291 NewIUnregisterPhysicalConnection(
292 OUT PUNREGISTERPHYSICALCONNECTION
*OutConnection
);
294 #define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet,\
295 PropGeneral, PropInstances, PropIntersection)\
296 DEFINE_KSPROPERTY_TABLE(PinSet) {\
297 DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
298 DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
299 DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
300 DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
301 DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
302 DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
303 DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
304 DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
305 DEFINE_KSPROPERTY_ITEM_PIN_GLOBALCINSTANCES(PropGeneral),\
306 DEFINE_KSPROPERTY_ITEM_PIN_NECESSARYINSTANCES(PropGeneral),\
307 DEFINE_KSPROPERTY_ITEM_PIN_PHYSICALCONNECTION(PropGeneral),\
308 DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
309 DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
310 DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral),\
311 DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(PropGeneral)\
317 UNICODE_STRING SymbolicLink
;
318 }SYMBOLICLINK_ENTRY
, *PSYMBOLICLINK_ENTRY
;
324 ISubdevice
*SubDevice
;
326 LIST_ENTRY SymbolicLinkList
;
327 }SUBDEVICE_ENTRY
, *PSUBDEVICE_ENTRY
;
332 ISubdevice
* FromSubDevice
;
333 UNICODE_STRING FromUnicodeString
;
335 ISubdevice
* ToSubDevice
;
336 UNICODE_STRING ToUnicodeString
;
338 }PHYSICAL_CONNECTION
, *PPHYSICAL_CONNECTION
;
342 KSDEVICE_HEADER KsDeviceHeader
;
343 PDEVICE_OBJECT PhysicalDeviceObject
;
344 PDEVICE_OBJECT PrevDeviceObject
;
345 PCPFNSTARTDEVICE StartDevice
;
347 IAdapterPowerManagement
* AdapterPowerManagement
;
349 KSOBJECT_CREATE_ITEM
* CreateItems
;
351 IResourceList
* resources
;
352 LIST_ENTRY SubDeviceList
;
353 LIST_ENTRY PhysicalConnectionList
;
355 LIST_ENTRY TimerList
;
356 KSPIN_LOCK TimerListLock
;
358 } PCLASS_DEVICE_EXTENSION
, *PPCLASS_DEVICE_EXTENSION
;
363 KSSTREAM_HEADER Header
;
365 }CONTEXT_WRITE
, *PCONTEXT_WRITE
;
370 PIO_WORKITEM WorkItem
;
372 }CLOSESTREAM_CONTEXT
, *PCLOSESTREAM_CONTEXT
;
377 PIO_TIMER_ROUTINE pTimerRoutine
;
379 }TIMER_CONTEXT
, *PTIMER_CONTEXT
;