- Silence tons of debug messages
[reactos.git] / reactos / drivers / wdm / audio / backpln / portcls / private.h
1 /*
2 PortCls FDO Extension
3
4 by Andrew Greenwood
5 */
6
7 #ifndef PORTCLS_PRIVATE_H
8 #define PORTCLS_PRIVATE_H
9
10 #include <ntddk.h>
11 #include <portcls.h>
12 #define NDEBUG
13 #include <debug.h>
14
15 #include <dmusicks.h>
16
17 #include "interfaces.h"
18 #include <ks.h>
19 #include <ksmedia.h>
20 #include <stdio.h>
21 #include <math.h>
22 #include <intrin.h>
23
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')
26
27 #ifdef _MSC_VER
28 #define STDCALL
29 #define DDKAPI
30 #endif
31
32 NTSTATUS
33 NTAPI
34 PortClsCreate(
35 IN PDEVICE_OBJECT DeviceObject,
36 IN PIRP Irp);
37
38 NTSTATUS
39 NTAPI
40 PortClsPnp(
41 IN PDEVICE_OBJECT DeviceObject,
42 IN PIRP Irp);
43
44 NTSTATUS
45 NTAPI
46 PortClsPower(
47 IN PDEVICE_OBJECT DeviceObject,
48 IN PIRP Irp);
49
50 NTSTATUS
51 NTAPI
52 PortClsSysControl(
53 IN PDEVICE_OBJECT DeviceObject,
54 IN PIRP Irp);
55
56 NTSTATUS NewMiniportDMusUART(
57 OUT PMINIPORT* OutMiniport,
58 IN REFCLSID ClassId);
59
60 NTSTATUS NewMiniportFmSynth(
61 OUT PMINIPORT* OutMiniport,
62 IN REFCLSID ClassId);
63
64 NTSTATUS NewPortMidi(
65 OUT PPORT* OutPort);
66
67 NTSTATUS NewPortDMus(
68 OUT PPORT* OutPort);
69
70 NTSTATUS NewPortTopology(
71 OUT PPORT* OutPort);
72
73 NTSTATUS NewPortWaveCyclic(
74 OUT PPORT* OutPort);
75
76 NTSTATUS NewPortWavePci(
77 OUT PPORT* OutPort);
78
79 NTSTATUS NewIDrmPort(
80 OUT PDRMPORT2 *OutPort);
81
82 NTSTATUS NewPortClsVersion(
83 OUT PPORTCLSVERSION * OutVersion);
84
85 NTSTATUS NewPortFilterWaveCyclic(
86 OUT IPortFilterWaveCyclic ** OutFilter);
87
88 NTSTATUS NewPortPinWaveCyclic(
89 OUT IPortPinWaveCyclic ** OutPin);
90
91 NTSTATUS
92 NTAPI
93 NewDispatchObject(
94 IN PIRP Irp,
95 IN IIrpTarget * Target);
96
97 PMINIPORTWAVECYCLIC
98 GetWaveCyclicMiniport(
99 IN IPortWaveCyclic* iface);
100
101 PVOID
102 AllocateItem(
103 IN POOL_TYPE PoolType,
104 IN SIZE_T NumberOfBytes,
105 IN ULONG Tag);
106
107 VOID
108 FreeItem(
109 IN PVOID Item,
110 IN ULONG Tag);
111
112 NTSTATUS
113 NTAPI
114 NewIrpQueue(
115 IN IIrpQueue **Queue);
116
117
118 typedef struct
119 {
120 LIST_ENTRY Entry;
121 KSOBJECT_HEADER ObjectHeader;
122 }SUBDEVICE_ENTRY;
123
124 typedef struct
125 {
126 LIST_ENTRY Entry;
127 ISubdevice * FromSubDevice;
128 LPWSTR FromUnicodeString;
129 ULONG FromPin;
130 ISubdevice * ToSubDevice;
131 LPWSTR ToUnicodeString;
132 ULONG ToPin;
133 }PHYSICAL_CONNECTION;
134
135 NTSTATUS
136 NTAPI
137 TopologyPropertyHandler(
138 IN PIRP Irp,
139 IN PKSIDENTIFIER Request,
140 IN OUT PVOID Data);
141
142 NTSTATUS
143 NTAPI
144 PinPropertyHandler(
145 IN PIRP Irp,
146 IN PKSIDENTIFIER Request,
147 IN OUT PVOID Data);
148
149 typedef struct
150 {
151 KSDEVICE_HEADER KsDeviceHeader;
152 PDEVICE_OBJECT PhysicalDeviceObject;
153 PDEVICE_OBJECT PrevDeviceObject;
154 PCPFNSTARTDEVICE StartDevice;
155 IAdapterPowerManagement * AdapterPowerManagement;
156 ULONG MaxSubDevices;
157 KSOBJECT_CREATE_ITEM * CreateItems;
158
159
160 IResourceList* resources;
161 LIST_ENTRY SubDeviceList;
162 LIST_ENTRY PhysicalConnectionList;
163
164 } PCLASS_DEVICE_EXTENSION, *PPCLASS_DEVICE_EXTENSION;
165
166
167 typedef struct
168 {
169 KSSTREAM_HEADER Header;
170 PIRP Irp;
171 }CONTEXT_WRITE, *PCONTEXT_WRITE;
172
173 NTSTATUS
174 NTAPI
175 PcDmaMasterDescription(
176 IN PRESOURCELIST ResourceList OPTIONAL,
177 IN BOOLEAN ScatterGather,
178 IN BOOLEAN Dma32BitAddresses,
179 IN BOOLEAN IgnoreCount,
180 IN BOOLEAN Dma64BitAddresses,
181 IN DMA_WIDTH DmaWidth,
182 IN DMA_SPEED DmaSpeed,
183 IN ULONG MaximumLength,
184 IN ULONG DmaPort,
185 OUT PDEVICE_DESCRIPTION DeviceDescription);
186
187 NTSTATUS
188 NTAPI
189 PcDmaSlaveDescription(
190 IN PRESOURCELIST ResourceList OPTIONAL,
191 IN ULONG DmaIndex,
192 IN BOOL DemandMode,
193 IN ULONG AutoInitialize,
194 IN DMA_SPEED DmaSpeed,
195 IN ULONG MaximumLength,
196 IN ULONG DmaPort,
197 OUT PDEVICE_DESCRIPTION DeviceDescription);
198
199 NTSTATUS
200 NTAPI
201 PcCreateSubdeviceDescriptor(
202 OUT SUBDEVICE_DESCRIPTOR ** OutSubdeviceDescriptor,
203 IN ULONG InterfaceCount,
204 IN GUID * InterfaceGuids,
205 IN ULONG IdentifierCount,
206 IN KSIDENTIFIER *Identifier,
207 IN ULONG FilterPropertiesCount,
208 IN KSPROPERTY_SET * FilterProperties,
209 IN ULONG Unknown1,
210 IN ULONG Unknown2,
211 IN ULONG PinPropertiesCount,
212 IN KSPROPERTY_SET * PinProperties,
213 IN ULONG EventSetCount,
214 IN KSEVENT_SET * EventSet,
215 IN PPCFILTER_DESCRIPTOR FilterDescription);
216
217 NTSTATUS
218 NTAPI
219 PcValidateConnectRequest(
220 IN PIRP Irp,
221 IN KSPIN_FACTORY * Descriptor,
222 OUT PKSPIN_CONNECT* Connect);
223
224 NTSTATUS
225 NTAPI
226 PcCreateItemDispatch(
227 IN PDEVICE_OBJECT DeviceObject,
228 IN PIRP Irp);
229
230 NTSTATUS
231 NTAPI
232 PcPropertyHandler(
233 IN PIRP Irp,
234 IN PSUBDEVICE_DESCRIPTOR Descriptor);
235
236 PDEVICE_OBJECT
237 GetDeviceObject(
238 IPortWaveCyclic* iface);
239
240 NTSTATUS
241 NTAPI
242 IPortWavePciStream_AddMapping(
243 IN IPortWavePciStream *iface,
244 IN PUCHAR Buffer,
245 IN ULONG BufferSize,
246 IN PIRP Irp);
247
248 NTSTATUS
249 NTAPI
250 NewIPortWavePciStream(
251 OUT PPORTWAVEPCISTREAM *Stream,
252 IN KSPIN_CONNECT *ConnectDetails,
253 IN PKSDATAFORMAT DataFormat,
254 IN PDEVICE_OBJECT DeviceObject,
255 IN ULONG FrameSize);
256
257 #define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet,\
258 PropGeneral, PropInstances, PropIntersection)\
259 DEFINE_KSPROPERTY_TABLE(PinSet) {\
260 DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(PropInstances),\
261 DEFINE_KSPROPERTY_ITEM_PIN_CTYPES(PropGeneral),\
262 DEFINE_KSPROPERTY_ITEM_PIN_DATAFLOW(PropGeneral),\
263 DEFINE_KSPROPERTY_ITEM_PIN_DATARANGES(PropGeneral),\
264 DEFINE_KSPROPERTY_ITEM_PIN_DATAINTERSECTION(PropIntersection),\
265 DEFINE_KSPROPERTY_ITEM_PIN_INTERFACES(PropGeneral),\
266 DEFINE_KSPROPERTY_ITEM_PIN_MEDIUMS(PropGeneral),\
267 DEFINE_KSPROPERTY_ITEM_PIN_COMMUNICATION(PropGeneral),\
268 DEFINE_KSPROPERTY_ITEM_PIN_CATEGORY(PropGeneral),\
269 DEFINE_KSPROPERTY_ITEM_PIN_NAME(PropGeneral),\
270 DEFINE_KSPROPERTY_ITEM_PIN_CONSTRAINEDDATARANGES(PropGeneral),\
271 DEFINE_KSPROPERTY_ITEM_PIN_PROPOSEDATAFORMAT(PropGeneral)\
272 }
273
274 #endif