10 typedef struct __TOPOLOGY_NODE__
15 ULONG NodeConnectedToCount
;
16 struct __TOPOLOGY_NODE__
** NodeConnectedTo
;
18 ULONG NodeConnectedFromCount
;
19 struct __TOPOLOGY_NODE__
** NodeConnectedFrom
;
20 PULONG LogicalPinNodeConnectedFrom
;
22 ULONG PinConnectedFromCount
;
23 PULONG PinConnectedFrom
;
25 ULONG PinConnectedToCount
;
26 PULONG PinConnectedTo
;
30 }TOPOLOGY_NODE
, *PTOPOLOGY_NODE
;
36 ULONG NodesConnectedToCount
;
37 PTOPOLOGY_NODE
* NodesConnectedTo
;
39 ULONG NodesConnectedFromCount
;
40 PTOPOLOGY_NODE
* NodesConnectedFrom
;
42 ULONG PinConnectedFromCount
;
43 PULONG PinConnectedFrom
;
45 ULONG PinConnectedToCount
;
46 PULONG PinConnectedTo
;
55 ULONG TopologyPinsCount
;
58 ULONG TopologyNodesCount
;
59 PTOPOLOGY_NODE TopologyNodes
;
61 }TOPOLOGY
, *PTOPOLOGY
;
70 }MIXER_INFO
, *LPMIXER_INFO
;
75 MIXERCONTROLW Control
;
79 }MIXERCONTROL_EXT
, *LPMIXERCONTROL_EXT
;
86 LIST_ENTRY ControlsList
;
88 }MIXERLINE_EXT
, *LPMIXERLINE_EXT
;
94 }MIXERCONTROL_DATA
, *LPMIXERCONTROL_DATA
;
98 MIXERCONTROL_DATA Header
;
102 ULONG InputSteppingDelta
;
105 }MIXERVOLUME_DATA
, *LPMIXERVOLUME_DATA
;
112 HANDLE hDeviceInterfaceKey
;
115 LPMIXER_INFO MixerInfo
;
116 }MIXER_DATA
, *LPMIXER_DATA
;
125 WAVEOUTCAPSW OutCaps
;
128 }WAVE_INFO
, *LPWAVE_INFO
;
137 MIDIOUTCAPSW OutCaps
;
141 }MIDI_INFO
, *LPMIDI_INFO
;
145 ULONG MixerListCount
;
146 LIST_ENTRY MixerList
;
148 ULONG MixerDataCount
;
149 LIST_ENTRY MixerData
;
151 ULONG WaveInListCount
;
152 LIST_ENTRY WaveInList
;
154 ULONG WaveOutListCount
;
155 LIST_ENTRY WaveOutList
;
157 ULONG MidiInListCount
;
158 LIST_ENTRY MidiInList
;
160 ULONG MidiOutListCount
;
161 LIST_ENTRY MidiOutList
;
162 }MIXER_LIST
, *PMIXER_LIST
;
167 PVOID MixerEventContext
;
168 PMIXER_EVENT MixerEventRoutine
;
170 }EVENT_NOTIFICATION_ENTRY
, *PEVENT_NOTIFICATION_ENTRY
;
172 #define DESTINATION_LINE (0xFFFF0000)
173 #define SOURCE_LINE (0x10000)
175 MMixerGetFilterPinCount(
176 IN PMIXER_CONTEXT MixerContext
,
181 IN PKSMULTIPLE_ITEM MultipleItem
,
185 MMixerGetNodeIndexes(
186 IN PMIXER_CONTEXT MixerContext
,
187 IN PKSMULTIPLE_ITEM MultipleItem
,
191 OUT PULONG NodeReferenceCount
,
192 OUT PULONG
*NodeReference
);
194 PKSTOPOLOGY_CONNECTION
195 MMixerGetConnectionByIndex(
196 IN PKSMULTIPLE_ITEM MultipleItem
,
200 MMixerGetControlTypeFromTopologyNode(
204 MMixerGetSourceMixerLineByLineId(
205 LPMIXER_INFO MixerInfo
,
209 MMixerGetFilterTopologyProperty(
210 IN PMIXER_CONTEXT MixerContext
,
213 OUT PKSMULTIPLE_ITEM
* OutMultipleItem
);
217 IN PMIXER_CONTEXT MixerContext
,
218 IN LPMIXER_INFO MixerInfo
);
221 MMixerGetPhysicalConnection(
222 IN PMIXER_CONTEXT MixerContext
,
225 OUT PKSPIN_PHYSICALCONNECTION
*OutConnection
);
229 IN PMIXER_CONTEXT MixerContext
,
230 IN PMIXER_LIST MixerList
,
231 IN LPMIXER_DATA MixerData
,
232 IN PULONG DeviceCount
);
235 MMixerAllocatePinConnect(
236 IN PMIXER_CONTEXT MixerContext
,
237 ULONG DataFormatSize
);
240 MMixerGetAudioPinDataRanges(
241 IN PMIXER_CONTEXT MixerContext
,
244 IN OUT PKSMULTIPLE_ITEM
* OutMultipleItem
);
247 MMixerInitializeMidiForFilter(
248 IN PMIXER_CONTEXT MixerContext
,
249 IN PMIXER_LIST MixerList
,
250 IN LPMIXER_DATA MixerData
,
251 IN PTOPOLOGY Topology
);
255 IN PMIXER_CONTEXT MixerContext
);
258 MMixerGetMixerInfoByIndex(
259 IN PMIXER_CONTEXT MixerContext
,
260 IN ULONG MixerIndex
);
263 MMixerGetSourceMixerLineByComponentType(
264 LPMIXER_INFO MixerInfo
,
265 DWORD dwComponentType
);
268 MMixerGetMixerControlById(
269 LPMIXER_INFO MixerInfo
,
271 LPMIXERLINE_EXT
*MixerLine
,
272 LPMIXERCONTROL_EXT
*MixerControl
,
276 MMixerSetGetMuteControlDetails(
277 IN PMIXER_CONTEXT MixerContext
,
278 IN LPMIXER_INFO MixerInfo
,
279 IN LPMIXERCONTROL_EXT MixerControl
,
281 IN LPMIXERCONTROLDETAILS MixerControlDetails
,
285 MMixerSetGetVolumeControlDetails(
286 IN PMIXER_CONTEXT MixerContext
,
287 IN LPMIXER_INFO MixerInfo
,
290 LPMIXERCONTROL_EXT MixerControl
,
291 IN LPMIXERCONTROLDETAILS MixerControlDetails
,
292 LPMIXERLINE_EXT MixerLine
);
295 MMixerSetGetMuxControlDetails(
296 IN PMIXER_CONTEXT MixerContext
,
297 IN LPMIXER_INFO MixerInfo
,
301 LPMIXERCONTROL_EXT MixerControl
,
302 IN LPMIXERCONTROLDETAILS MixerControlDetails
,
303 LPMIXERLINE_EXT MixerLine
);
307 MMixerSetGetControlDetails(
308 IN PMIXER_CONTEXT MixerContext
,
314 IN PLONG InputValue
);
317 MMixerGetDataByDeviceId(
318 IN PMIXER_LIST MixerList
,
322 MMixerGetDataByDeviceName(
323 IN PMIXER_LIST MixerList
,
324 IN LPWSTR DeviceName
);
327 MMixerCreateMixerData(
328 IN PMIXER_CONTEXT MixerContext
,
329 IN PMIXER_LIST MixerList
,
331 IN LPWSTR DeviceName
,
336 MMixerInitializeWaveInfo(
337 IN PMIXER_CONTEXT MixerContext
,
338 IN PMIXER_LIST MixerList
,
339 IN LPMIXER_DATA MixerData
,
340 IN LPWSTR DeviceName
,
347 IN PMIXER_CONTEXT MixerContext
,
348 IN OUT LPMIXER_INFO MixerInfo
,
350 IN PMIXER_EVENT MixerEventRoutine
);
354 IN PMIXER_CONTEXT MixerContext
,
355 OUT LPWSTR DeviceName
,
359 MMixerInitializePinConnect(
360 IN OUT PKSPIN_CONNECT PinConnect
,
364 MMixerGetPinDataFlowAndCommunication(
365 IN PMIXER_CONTEXT MixerContext
,
368 OUT PKSPIN_DATAFLOW DataFlow
,
369 OUT PKSPIN_COMMUNICATION Communication
);
372 MMixerHandleAlternativeMixers(
373 IN PMIXER_CONTEXT MixerContext
,
374 IN PMIXER_LIST MixerList
,
375 IN LPMIXER_DATA MixerData
,
376 IN PTOPOLOGY Topology
);
379 MMixerGetMixerByName(
380 IN PMIXER_LIST MixerList
,
382 OUT LPMIXER_INFO
*MixerInfo
);
387 MMixerCreateTopology(
388 IN PMIXER_CONTEXT MixerContext
,
390 IN PKSMULTIPLE_ITEM NodeConnections
,
391 IN PKSMULTIPLE_ITEM NodeTypes
,
392 OUT PTOPOLOGY
*OutTopology
);
395 MMixerGetAllUpOrDownstreamPinsFromNodeIndex(
396 IN PMIXER_CONTEXT MixerContext
,
397 IN PTOPOLOGY Topology
,
400 OUT PULONG OutPinsCount
,
404 MMixerGetAllUpOrDownstreamPinsFromPinIndex(
405 IN PMIXER_CONTEXT MixerContext
,
406 IN PTOPOLOGY Topology
,
409 OUT PULONG OutPinsCount
,
413 MMixerGetNextNodesFromPinIndex(
414 IN PMIXER_CONTEXT MixerContext
,
415 IN PTOPOLOGY Topology
,
418 OUT PULONG OutNodesCount
,
419 OUT PULONG OutNodes
);
422 MMixerAllocateTopologyPinArray(
423 IN PMIXER_CONTEXT MixerContext
,
424 IN PTOPOLOGY Topology
,
425 OUT PULONG
* OutPins
);
428 MMixerAllocateTopologyNodeArray(
429 IN PMIXER_CONTEXT MixerContext
,
430 IN PTOPOLOGY Topology
,
431 OUT PULONG
* OutPins
);
434 MMixerGetAllUpOrDownstreamNodesFromPinIndex(
435 IN PMIXER_CONTEXT MixerContext
,
436 IN PTOPOLOGY Topology
,
439 OUT PULONG OutNodesCount
,
440 OUT PULONG OutNodes
);
443 MMixerIsNodeTerminator(
444 IN PTOPOLOGY Topology
,
446 OUT ULONG
* bTerminator
);
449 MMixerGetNextNodesFromNodeIndex(
450 IN PMIXER_CONTEXT MixerContext
,
451 IN PTOPOLOGY Topology
,
454 OUT PULONG OutNodesCount
,
455 OUT PULONG OutNodes
);
458 MMixerGetNodeTypeFromTopology(
459 IN PTOPOLOGY Topology
,
463 MMixerGetAllUpOrDownstreamNodesFromNodeIndex(
464 IN PMIXER_CONTEXT MixerContext
,
465 IN PTOPOLOGY Topology
,
468 OUT PULONG OutNodesCount
,
469 OUT PULONG OutNodes
);
472 MMixerIsNodeConnectedToPin(
473 IN PMIXER_CONTEXT MixerContext
,
474 IN PTOPOLOGY Topology
,
478 OUT PULONG bConnected
);
481 MMixerGetNodeIndexFromGuid(
482 IN PTOPOLOGY Topology
,
483 IN
const GUID
*NodeType
);
486 MMixerSetTopologyNodeReserved(
487 IN PTOPOLOGY Topology
,
491 MMixerIsTopologyNodeReserved(
492 IN PTOPOLOGY Topology
,
494 OUT PULONG bReserved
);
497 MMixerSetTopologyPinReserved(
498 IN PTOPOLOGY Topology
,
502 MMixerIsTopologyPinReserved(
503 IN PTOPOLOGY Topology
,
505 OUT PULONG bReserved
);
508 MMixerGetTopologyPinCount(
509 IN PTOPOLOGY Topology
,
510 OUT PULONG PinCount
);
513 MMixerGetConnectedFromLogicalTopologyPins(
514 IN PTOPOLOGY Topology
,
516 OUT PULONG OutPinCount
,
520 MMixerPrintTopology();