7 #ifndef PORTCLS_PRIVATE_H
8 #define PORTCLS_PRIVATE_H
17 #include "interfaces.h"
24 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
25 #define TAG_PORTCLASS TAG('P', 'C', 'L', 'S')
32 #define ASSERT_IRQL(x) ASSERT(KeGetCurrentIrql() <= (x))
37 IN PDEVICE_OBJECT DeviceObject
,
43 IN PDEVICE_OBJECT DeviceObject
,
49 IN PDEVICE_OBJECT DeviceObject
,
55 IN PDEVICE_OBJECT DeviceObject
,
58 NTSTATUS
NewMiniportDMusUART(
59 OUT PMINIPORT
* OutMiniport
,
62 NTSTATUS
NewMiniportFmSynth(
63 OUT PMINIPORT
* OutMiniport
,
72 NTSTATUS
NewPortTopology(
75 NTSTATUS
NewPortWaveCyclic(
78 NTSTATUS
NewPortWavePci(
82 OUT PDRMPORT2
*OutPort
);
84 NTSTATUS
NewPortClsVersion(
85 OUT PPORTCLSVERSION
* OutVersion
);
87 NTSTATUS
NewPortFilterWaveCyclic(
88 OUT IPortFilterWaveCyclic
** OutFilter
);
90 NTSTATUS
NewPortPinWaveCyclic(
91 OUT IPortPinWaveCyclic
** OutPin
);
95 OUT IPortFilterWavePci
** OutFilter
);
97 NTSTATUS
NewPortPinWavePci(
98 OUT IPortPinWavePci
** OutPin
);
101 GetDeviceObjectFromWaveCyclic(
102 IPortWavePci
* iface
);
105 GetDeviceObjectFromPortWavePci(
106 IPortWavePci
* iface
);
112 #if (NTDDI_VERSION >= NTDDI_VISTA)
116 OUT IPortFilterWaveRT
** OutFilter
);
118 NTSTATUS
NewPortPinWaveRT(
119 OUT IPortPinWaveRT
** OutPin
);
123 IN IPortWaveRT
* iface
);
126 GetDeviceObjectFromPortWaveRT(
131 PPORTWAVERTSTREAM
*OutStream
);
139 IN IIrpTarget
* Target
);
142 GetWaveCyclicMiniport(
143 IN IPortWaveCyclic
* iface
);
147 IN POOL_TYPE PoolType
,
148 IN SIZE_T NumberOfBytes
,
159 IN IIrpQueue
**Queue
);
165 KSOBJECT_HEADER ObjectHeader
;
171 ISubdevice
* FromSubDevice
;
172 LPWSTR FromUnicodeString
;
174 ISubdevice
* ToSubDevice
;
175 LPWSTR ToUnicodeString
;
177 }PHYSICAL_CONNECTION
;
181 TopologyPropertyHandler(
183 IN PKSIDENTIFIER Request
,
190 IN PKSIDENTIFIER Request
,
195 KSDEVICE_HEADER KsDeviceHeader
;
196 PDEVICE_OBJECT PhysicalDeviceObject
;
197 PDEVICE_OBJECT PrevDeviceObject
;
198 PCPFNSTARTDEVICE StartDevice
;
200 IAdapterPowerManagement
* AdapterPowerManagement
;
202 KSOBJECT_CREATE_ITEM
* CreateItems
;
204 IResourceList
* resources
;
205 LIST_ENTRY SubDeviceList
;
206 LIST_ENTRY PhysicalConnectionList
;
208 } PCLASS_DEVICE_EXTENSION
, *PPCLASS_DEVICE_EXTENSION
;
213 KSSTREAM_HEADER Header
;
215 }CONTEXT_WRITE
, *PCONTEXT_WRITE
;
220 PIO_WORKITEM WorkItem
;
222 }CLOSESTREAM_CONTEXT
, *PCLOSESTREAM_CONTEXT
;
226 PcDmaMasterDescription(
227 IN PRESOURCELIST ResourceList OPTIONAL
,
228 IN BOOLEAN ScatterGather
,
229 IN BOOLEAN Dma32BitAddresses
,
230 IN BOOLEAN IgnoreCount
,
231 IN BOOLEAN Dma64BitAddresses
,
232 IN DMA_WIDTH DmaWidth
,
233 IN DMA_SPEED DmaSpeed
,
234 IN ULONG MaximumLength
,
236 OUT PDEVICE_DESCRIPTION DeviceDescription
);
240 PcDmaSlaveDescription(
241 IN PRESOURCELIST ResourceList OPTIONAL
,
244 IN ULONG AutoInitialize
,
245 IN DMA_SPEED DmaSpeed
,
246 IN ULONG MaximumLength
,
248 OUT PDEVICE_DESCRIPTION DeviceDescription
);
252 PcCreateSubdeviceDescriptor(
253 OUT SUBDEVICE_DESCRIPTOR
** OutSubdeviceDescriptor
,
254 IN ULONG InterfaceCount
,
255 IN GUID
* InterfaceGuids
,
256 IN ULONG IdentifierCount
,
257 IN KSIDENTIFIER
*Identifier
,
258 IN ULONG FilterPropertiesCount
,
259 IN KSPROPERTY_SET
* FilterProperties
,
262 IN ULONG PinPropertiesCount
,
263 IN KSPROPERTY_SET
* PinProperties
,
264 IN ULONG EventSetCount
,
265 IN KSEVENT_SET
* EventSet
,
266 IN PPCFILTER_DESCRIPTOR FilterDescription
);
270 PcValidateConnectRequest(
272 IN KSPIN_FACTORY
* Descriptor
,
273 OUT PKSPIN_CONNECT
* Connect
);
277 PcCreateItemDispatch(
278 IN PDEVICE_OBJECT DeviceObject
,
285 IN PSUBDEVICE_DESCRIPTOR Descriptor
);
290 IN PFILE_OBJECT FileObject
,
291 IN PKSPROPERTY UNALIGNED Property
,
292 IN ULONG PropertyLength
,
293 IN OUT PVOID UNALIGNED Data
,
295 OUT PIO_STATUS_BLOCK IoStatus
,
296 IN ULONG PropertySetsCount
,
297 IN
const KSPROPERTY_SET
*PropertySet
,
298 IN PSUBDEVICE_DESCRIPTOR Descriptor
,
299 IN ISubdevice
*SubDevice
);
303 IPortWaveCyclic
* iface
);
307 IPortWavePciStream_GetIrpQueue(
308 IN IPortWavePciStream
*iface
);
312 NewIPortWavePciStream(
313 OUT PPORTWAVEPCISTREAM
*Stream
);
315 #define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet,\
316 PropGeneral, PropInstances, PropIntersection)\
317 DEFINE_KSPROPERTY_TABLE(PinSet) {\
318 DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
319 DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
320 DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
321 DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
322 DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
323 DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
324 DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
325 DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
326 DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
327 DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
328 DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral),\
329 DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(PropGeneral)\