14 typedef struct __TOPOLOGY_NODE__
19 ULONG NodeConnectedToCount
;
20 struct __TOPOLOGY_NODE__
** NodeConnectedTo
;
22 ULONG NodeConnectedFromCount
;
23 struct __TOPOLOGY_NODE__
** NodeConnectedFrom
;
24 PULONG LogicalPinNodeConnectedFrom
;
26 ULONG PinConnectedFromCount
;
27 PULONG PinConnectedFrom
;
29 ULONG PinConnectedToCount
;
30 PULONG PinConnectedTo
;
34 }TOPOLOGY_NODE
, *PTOPOLOGY_NODE
;
40 ULONG NodesConnectedToCount
;
41 PTOPOLOGY_NODE
* NodesConnectedTo
;
43 ULONG NodesConnectedFromCount
;
44 PTOPOLOGY_NODE
* NodesConnectedFrom
;
46 ULONG PinConnectedFromCount
;
47 PULONG PinConnectedFrom
;
49 ULONG PinConnectedToCount
;
50 PULONG PinConnectedTo
;
59 ULONG TopologyPinsCount
;
62 ULONG TopologyNodesCount
;
63 PTOPOLOGY_NODE TopologyNodes
;
65 }TOPOLOGY
, *PTOPOLOGY
;
74 }MIXER_INFO
, *LPMIXER_INFO
;
79 MIXERCONTROLW Control
;
83 }MIXERCONTROL_EXT
, *LPMIXERCONTROL_EXT
;
90 LIST_ENTRY ControlsList
;
92 }MIXERLINE_EXT
, *LPMIXERLINE_EXT
;
98 }MIXERCONTROL_DATA
, *LPMIXERCONTROL_DATA
;
102 MIXERCONTROL_DATA Header
;
106 ULONG InputSteppingDelta
;
109 }MIXERVOLUME_DATA
, *LPMIXERVOLUME_DATA
;
116 HANDLE hDeviceInterfaceKey
;
119 LPMIXER_INFO MixerInfo
;
120 }MIXER_DATA
, *LPMIXER_DATA
;
129 WAVEOUTCAPSW OutCaps
;
132 }WAVE_INFO
, *LPWAVE_INFO
;
141 MIDIOUTCAPSW OutCaps
;
145 }MIDI_INFO
, *LPMIDI_INFO
;
149 ULONG MixerListCount
;
150 LIST_ENTRY MixerList
;
152 ULONG MixerDataCount
;
153 LIST_ENTRY MixerData
;
155 ULONG WaveInListCount
;
156 LIST_ENTRY WaveInList
;
158 ULONG WaveOutListCount
;
159 LIST_ENTRY WaveOutList
;
161 ULONG MidiInListCount
;
162 LIST_ENTRY MidiInList
;
164 ULONG MidiOutListCount
;
165 LIST_ENTRY MidiOutList
;
166 }MIXER_LIST
, *PMIXER_LIST
;
171 PVOID MixerEventContext
;
172 PMIXER_EVENT MixerEventRoutine
;
174 }EVENT_NOTIFICATION_ENTRY
, *PEVENT_NOTIFICATION_ENTRY
;
176 #define DESTINATION_LINE (0xFFFF0000)
177 #define SOURCE_LINE (0x10000)
179 MMixerGetFilterPinCount(
180 IN PMIXER_CONTEXT MixerContext
,
185 IN PKSMULTIPLE_ITEM MultipleItem
,
189 MMixerGetNodeIndexes(
190 IN PMIXER_CONTEXT MixerContext
,
191 IN PKSMULTIPLE_ITEM MultipleItem
,
195 OUT PULONG NodeReferenceCount
,
196 OUT PULONG
*NodeReference
);
198 PKSTOPOLOGY_CONNECTION
199 MMixerGetConnectionByIndex(
200 IN PKSMULTIPLE_ITEM MultipleItem
,
204 MMixerGetControlTypeFromTopologyNode(
208 MMixerGetSourceMixerLineByLineId(
209 LPMIXER_INFO MixerInfo
,
213 MMixerGetFilterTopologyProperty(
214 IN PMIXER_CONTEXT MixerContext
,
217 OUT PKSMULTIPLE_ITEM
* OutMultipleItem
);
221 IN PMIXER_CONTEXT MixerContext
,
222 IN LPMIXER_INFO MixerInfo
);
225 MMixerGetPhysicalConnection(
226 IN PMIXER_CONTEXT MixerContext
,
229 OUT PKSPIN_PHYSICALCONNECTION
*OutConnection
);
233 IN PMIXER_CONTEXT MixerContext
,
234 IN PMIXER_LIST MixerList
,
235 IN LPMIXER_DATA MixerData
,
236 IN PULONG DeviceCount
);
239 MMixerAllocatePinConnect(
240 IN PMIXER_CONTEXT MixerContext
,
241 ULONG DataFormatSize
);
244 MMixerGetAudioPinDataRanges(
245 IN PMIXER_CONTEXT MixerContext
,
248 IN OUT PKSMULTIPLE_ITEM
* OutMultipleItem
);
251 MMixerInitializeMidiForFilter(
252 IN PMIXER_CONTEXT MixerContext
,
253 IN PMIXER_LIST MixerList
,
254 IN LPMIXER_DATA MixerData
,
255 IN PTOPOLOGY Topology
);
259 IN PMIXER_CONTEXT MixerContext
);
262 MMixerGetMixerInfoByIndex(
263 IN PMIXER_CONTEXT MixerContext
,
264 IN ULONG MixerIndex
);
267 MMixerGetSourceMixerLineByComponentType(
268 LPMIXER_INFO MixerInfo
,
269 DWORD dwComponentType
);
272 MMixerGetMixerControlById(
273 LPMIXER_INFO MixerInfo
,
275 LPMIXERLINE_EXT
*MixerLine
,
276 LPMIXERCONTROL_EXT
*MixerControl
,
280 MMixerSetGetMuteControlDetails(
281 IN PMIXER_CONTEXT MixerContext
,
282 IN LPMIXER_INFO MixerInfo
,
283 IN LPMIXERCONTROL_EXT MixerControl
,
285 IN LPMIXERCONTROLDETAILS MixerControlDetails
,
289 MMixerSetGetVolumeControlDetails(
290 IN PMIXER_CONTEXT MixerContext
,
291 IN LPMIXER_INFO MixerInfo
,
294 LPMIXERCONTROL_EXT MixerControl
,
295 IN LPMIXERCONTROLDETAILS MixerControlDetails
,
296 LPMIXERLINE_EXT MixerLine
);
299 MMixerSetGetMuxControlDetails(
300 IN PMIXER_CONTEXT MixerContext
,
301 IN LPMIXER_INFO MixerInfo
,
305 LPMIXERCONTROL_EXT MixerControl
,
306 IN LPMIXERCONTROLDETAILS MixerControlDetails
,
307 LPMIXERLINE_EXT MixerLine
);
311 MMixerSetGetControlDetails(
312 IN PMIXER_CONTEXT MixerContext
,
318 IN PLONG InputValue
);
321 MMixerGetDataByDeviceId(
322 IN PMIXER_LIST MixerList
,
326 MMixerGetDataByDeviceName(
327 IN PMIXER_LIST MixerList
,
328 IN LPWSTR DeviceName
);
331 MMixerCreateMixerData(
332 IN PMIXER_CONTEXT MixerContext
,
333 IN PMIXER_LIST MixerList
,
335 IN LPWSTR DeviceName
,
340 MMixerInitializeWaveInfo(
341 IN PMIXER_CONTEXT MixerContext
,
342 IN PMIXER_LIST MixerList
,
343 IN LPMIXER_DATA MixerData
,
344 IN LPWSTR DeviceName
,
351 IN PMIXER_CONTEXT MixerContext
,
352 IN OUT LPMIXER_INFO MixerInfo
,
354 IN PMIXER_EVENT MixerEventRoutine
);
358 IN PMIXER_CONTEXT MixerContext
,
359 OUT LPWSTR DeviceName
,
363 MMixerInitializePinConnect(
364 IN OUT PKSPIN_CONNECT PinConnect
,
368 MMixerGetPinDataFlowAndCommunication(
369 IN PMIXER_CONTEXT MixerContext
,
372 OUT PKSPIN_DATAFLOW DataFlow
,
373 OUT PKSPIN_COMMUNICATION Communication
);
376 MMixerHandleAlternativeMixers(
377 IN PMIXER_CONTEXT MixerContext
,
378 IN PMIXER_LIST MixerList
,
379 IN LPMIXER_DATA MixerData
,
380 IN PTOPOLOGY Topology
);
383 MMixerGetMixerByName(
384 IN PMIXER_LIST MixerList
,
386 OUT LPMIXER_INFO
*MixerInfo
);
391 MMixerCreateTopology(
392 IN PMIXER_CONTEXT MixerContext
,
394 IN PKSMULTIPLE_ITEM NodeConnections
,
395 IN PKSMULTIPLE_ITEM NodeTypes
,
396 OUT PTOPOLOGY
*OutTopology
);
399 MMixerGetAllUpOrDownstreamPinsFromNodeIndex(
400 IN PMIXER_CONTEXT MixerContext
,
401 IN PTOPOLOGY Topology
,
404 OUT PULONG OutPinsCount
,
408 MMixerGetAllUpOrDownstreamPinsFromPinIndex(
409 IN PMIXER_CONTEXT MixerContext
,
410 IN PTOPOLOGY Topology
,
413 OUT PULONG OutPinsCount
,
417 MMixerGetNextNodesFromPinIndex(
418 IN PMIXER_CONTEXT MixerContext
,
419 IN PTOPOLOGY Topology
,
422 OUT PULONG OutNodesCount
,
423 OUT PULONG OutNodes
);
426 MMixerAllocateTopologyPinArray(
427 IN PMIXER_CONTEXT MixerContext
,
428 IN PTOPOLOGY Topology
,
429 OUT PULONG
* OutPins
);
432 MMixerAllocateTopologyNodeArray(
433 IN PMIXER_CONTEXT MixerContext
,
434 IN PTOPOLOGY Topology
,
435 OUT PULONG
* OutPins
);
438 MMixerGetAllUpOrDownstreamNodesFromPinIndex(
439 IN PMIXER_CONTEXT MixerContext
,
440 IN PTOPOLOGY Topology
,
443 OUT PULONG OutNodesCount
,
444 OUT PULONG OutNodes
);
447 MMixerIsNodeTerminator(
448 IN PTOPOLOGY Topology
,
450 OUT ULONG
* bTerminator
);
453 MMixerGetNextNodesFromNodeIndex(
454 IN PMIXER_CONTEXT MixerContext
,
455 IN PTOPOLOGY Topology
,
458 OUT PULONG OutNodesCount
,
459 OUT PULONG OutNodes
);
462 MMixerGetNodeTypeFromTopology(
463 IN PTOPOLOGY Topology
,
467 MMixerGetAllUpOrDownstreamNodesFromNodeIndex(
468 IN PMIXER_CONTEXT MixerContext
,
469 IN PTOPOLOGY Topology
,
472 OUT PULONG OutNodesCount
,
473 OUT PULONG OutNodes
);
476 MMixerIsNodeConnectedToPin(
477 IN PMIXER_CONTEXT MixerContext
,
478 IN PTOPOLOGY Topology
,
482 OUT PULONG bConnected
);
485 MMixerGetNodeIndexFromGuid(
486 IN PTOPOLOGY Topology
,
487 IN
const GUID
*NodeType
);
490 MMixerSetTopologyNodeReserved(
491 IN PTOPOLOGY Topology
,
495 MMixerIsTopologyNodeReserved(
496 IN PTOPOLOGY Topology
,
498 OUT PULONG bReserved
);
501 MMixerSetTopologyPinReserved(
502 IN PTOPOLOGY Topology
,
506 MMixerIsTopologyPinReserved(
507 IN PTOPOLOGY Topology
,
509 OUT PULONG bReserved
);
512 MMixerGetTopologyPinCount(
513 IN PTOPOLOGY Topology
,
514 OUT PULONG PinCount
);
517 MMixerGetConnectedFromLogicalTopologyPins(
518 IN PTOPOLOGY Topology
,
520 OUT PULONG OutPinCount
,
524 MMixerPrintTopology();
526 #endif /* _MMIXER_PCH_ */