13 typedef struct __TOPOLOGY_NODE__
18 ULONG NodeConnectedToCount
;
19 struct __TOPOLOGY_NODE__
** NodeConnectedTo
;
21 ULONG NodeConnectedFromCount
;
22 struct __TOPOLOGY_NODE__
** NodeConnectedFrom
;
23 PULONG LogicalPinNodeConnectedFrom
;
25 ULONG PinConnectedFromCount
;
26 PULONG PinConnectedFrom
;
28 ULONG PinConnectedToCount
;
29 PULONG PinConnectedTo
;
33 }TOPOLOGY_NODE
, *PTOPOLOGY_NODE
;
39 ULONG NodesConnectedToCount
;
40 PTOPOLOGY_NODE
* NodesConnectedTo
;
42 ULONG NodesConnectedFromCount
;
43 PTOPOLOGY_NODE
* NodesConnectedFrom
;
45 ULONG PinConnectedFromCount
;
46 PULONG PinConnectedFrom
;
48 ULONG PinConnectedToCount
;
49 PULONG PinConnectedTo
;
58 ULONG TopologyPinsCount
;
61 ULONG TopologyNodesCount
;
62 PTOPOLOGY_NODE TopologyNodes
;
64 }TOPOLOGY
, *PTOPOLOGY
;
73 }MIXER_INFO
, *LPMIXER_INFO
;
78 MIXERCONTROLW Control
;
82 }MIXERCONTROL_EXT
, *LPMIXERCONTROL_EXT
;
89 LIST_ENTRY ControlsList
;
91 }MIXERLINE_EXT
, *LPMIXERLINE_EXT
;
97 }MIXERCONTROL_DATA
, *LPMIXERCONTROL_DATA
;
101 MIXERCONTROL_DATA Header
;
105 ULONG InputSteppingDelta
;
108 }MIXERVOLUME_DATA
, *LPMIXERVOLUME_DATA
;
115 HANDLE hDeviceInterfaceKey
;
118 LPMIXER_INFO MixerInfo
;
119 }MIXER_DATA
, *LPMIXER_DATA
;
128 WAVEOUTCAPSW OutCaps
;
131 }WAVE_INFO
, *LPWAVE_INFO
;
140 MIDIOUTCAPSW OutCaps
;
144 }MIDI_INFO
, *LPMIDI_INFO
;
148 ULONG MixerListCount
;
149 LIST_ENTRY MixerList
;
151 ULONG MixerDataCount
;
152 LIST_ENTRY MixerData
;
154 ULONG WaveInListCount
;
155 LIST_ENTRY WaveInList
;
157 ULONG WaveOutListCount
;
158 LIST_ENTRY WaveOutList
;
160 ULONG MidiInListCount
;
161 LIST_ENTRY MidiInList
;
163 ULONG MidiOutListCount
;
164 LIST_ENTRY MidiOutList
;
165 }MIXER_LIST
, *PMIXER_LIST
;
170 PVOID MixerEventContext
;
171 PMIXER_EVENT MixerEventRoutine
;
173 }EVENT_NOTIFICATION_ENTRY
, *PEVENT_NOTIFICATION_ENTRY
;
175 #define DESTINATION_LINE (0xFFFF0000)
176 #define SOURCE_LINE (0x10000)
178 MMixerGetFilterPinCount(
179 IN PMIXER_CONTEXT MixerContext
,
184 IN PKSMULTIPLE_ITEM MultipleItem
,
188 MMixerGetNodeIndexes(
189 IN PMIXER_CONTEXT MixerContext
,
190 IN PKSMULTIPLE_ITEM MultipleItem
,
194 OUT PULONG NodeReferenceCount
,
195 OUT PULONG
*NodeReference
);
197 PKSTOPOLOGY_CONNECTION
198 MMixerGetConnectionByIndex(
199 IN PKSMULTIPLE_ITEM MultipleItem
,
203 MMixerGetControlTypeFromTopologyNode(
207 MMixerGetSourceMixerLineByLineId(
208 LPMIXER_INFO MixerInfo
,
212 MMixerGetFilterTopologyProperty(
213 IN PMIXER_CONTEXT MixerContext
,
216 OUT PKSMULTIPLE_ITEM
* OutMultipleItem
);
220 IN PMIXER_CONTEXT MixerContext
,
221 IN LPMIXER_INFO MixerInfo
);
224 MMixerGetPhysicalConnection(
225 IN PMIXER_CONTEXT MixerContext
,
228 OUT PKSPIN_PHYSICALCONNECTION
*OutConnection
);
232 IN PMIXER_CONTEXT MixerContext
,
233 IN PMIXER_LIST MixerList
,
234 IN LPMIXER_DATA MixerData
,
235 IN PULONG DeviceCount
);
238 MMixerAllocatePinConnect(
239 IN PMIXER_CONTEXT MixerContext
,
240 ULONG DataFormatSize
);
243 MMixerGetAudioPinDataRanges(
244 IN PMIXER_CONTEXT MixerContext
,
247 IN OUT PKSMULTIPLE_ITEM
* OutMultipleItem
);
250 MMixerInitializeMidiForFilter(
251 IN PMIXER_CONTEXT MixerContext
,
252 IN PMIXER_LIST MixerList
,
253 IN LPMIXER_DATA MixerData
,
254 IN PTOPOLOGY Topology
);
258 IN PMIXER_CONTEXT MixerContext
);
261 MMixerGetMixerInfoByIndex(
262 IN PMIXER_CONTEXT MixerContext
,
263 IN ULONG MixerIndex
);
266 MMixerGetSourceMixerLineByComponentType(
267 LPMIXER_INFO MixerInfo
,
268 DWORD dwComponentType
);
271 MMixerGetMixerControlById(
272 LPMIXER_INFO MixerInfo
,
274 LPMIXERLINE_EXT
*MixerLine
,
275 LPMIXERCONTROL_EXT
*MixerControl
,
279 MMixerSetGetMuteControlDetails(
280 IN PMIXER_CONTEXT MixerContext
,
281 IN LPMIXER_INFO MixerInfo
,
282 IN LPMIXERCONTROL_EXT MixerControl
,
284 IN LPMIXERCONTROLDETAILS MixerControlDetails
,
288 MMixerSetGetVolumeControlDetails(
289 IN PMIXER_CONTEXT MixerContext
,
290 IN LPMIXER_INFO MixerInfo
,
293 LPMIXERCONTROL_EXT MixerControl
,
294 IN LPMIXERCONTROLDETAILS MixerControlDetails
,
295 LPMIXERLINE_EXT MixerLine
);
298 MMixerSetGetMuxControlDetails(
299 IN PMIXER_CONTEXT MixerContext
,
300 IN LPMIXER_INFO MixerInfo
,
304 LPMIXERCONTROL_EXT MixerControl
,
305 IN LPMIXERCONTROLDETAILS MixerControlDetails
,
306 LPMIXERLINE_EXT MixerLine
);
310 MMixerSetGetControlDetails(
311 IN PMIXER_CONTEXT MixerContext
,
317 IN PLONG InputValue
);
320 MMixerGetDataByDeviceId(
321 IN PMIXER_LIST MixerList
,
325 MMixerGetDataByDeviceName(
326 IN PMIXER_LIST MixerList
,
327 IN LPWSTR DeviceName
);
330 MMixerCreateMixerData(
331 IN PMIXER_CONTEXT MixerContext
,
332 IN PMIXER_LIST MixerList
,
334 IN LPWSTR DeviceName
,
339 MMixerInitializeWaveInfo(
340 IN PMIXER_CONTEXT MixerContext
,
341 IN PMIXER_LIST MixerList
,
342 IN LPMIXER_DATA MixerData
,
343 IN LPWSTR DeviceName
,
350 IN PMIXER_CONTEXT MixerContext
,
351 IN OUT LPMIXER_INFO MixerInfo
,
353 IN PMIXER_EVENT MixerEventRoutine
);
357 IN PMIXER_CONTEXT MixerContext
,
358 OUT LPWSTR DeviceName
,
362 MMixerInitializePinConnect(
363 IN OUT PKSPIN_CONNECT PinConnect
,
367 MMixerGetPinDataFlowAndCommunication(
368 IN PMIXER_CONTEXT MixerContext
,
371 OUT PKSPIN_DATAFLOW DataFlow
,
372 OUT PKSPIN_COMMUNICATION Communication
);
375 MMixerHandleAlternativeMixers(
376 IN PMIXER_CONTEXT MixerContext
,
377 IN PMIXER_LIST MixerList
,
378 IN LPMIXER_DATA MixerData
,
379 IN PTOPOLOGY Topology
);
382 MMixerGetMixerByName(
383 IN PMIXER_LIST MixerList
,
385 OUT LPMIXER_INFO
*MixerInfo
);
390 MMixerCreateTopology(
391 IN PMIXER_CONTEXT MixerContext
,
393 IN PKSMULTIPLE_ITEM NodeConnections
,
394 IN PKSMULTIPLE_ITEM NodeTypes
,
395 OUT PTOPOLOGY
*OutTopology
);
398 MMixerGetAllUpOrDownstreamPinsFromNodeIndex(
399 IN PMIXER_CONTEXT MixerContext
,
400 IN PTOPOLOGY Topology
,
403 OUT PULONG OutPinsCount
,
407 MMixerGetAllUpOrDownstreamPinsFromPinIndex(
408 IN PMIXER_CONTEXT MixerContext
,
409 IN PTOPOLOGY Topology
,
412 OUT PULONG OutPinsCount
,
416 MMixerGetNextNodesFromPinIndex(
417 IN PMIXER_CONTEXT MixerContext
,
418 IN PTOPOLOGY Topology
,
421 OUT PULONG OutNodesCount
,
422 OUT PULONG OutNodes
);
425 MMixerAllocateTopologyPinArray(
426 IN PMIXER_CONTEXT MixerContext
,
427 IN PTOPOLOGY Topology
,
428 OUT PULONG
* OutPins
);
431 MMixerAllocateTopologyNodeArray(
432 IN PMIXER_CONTEXT MixerContext
,
433 IN PTOPOLOGY Topology
,
434 OUT PULONG
* OutPins
);
437 MMixerGetAllUpOrDownstreamNodesFromPinIndex(
438 IN PMIXER_CONTEXT MixerContext
,
439 IN PTOPOLOGY Topology
,
442 OUT PULONG OutNodesCount
,
443 OUT PULONG OutNodes
);
446 MMixerIsNodeTerminator(
447 IN PTOPOLOGY Topology
,
449 OUT ULONG
* bTerminator
);
452 MMixerGetNextNodesFromNodeIndex(
453 IN PMIXER_CONTEXT MixerContext
,
454 IN PTOPOLOGY Topology
,
457 OUT PULONG OutNodesCount
,
458 OUT PULONG OutNodes
);
461 MMixerGetNodeTypeFromTopology(
462 IN PTOPOLOGY Topology
,
466 MMixerGetAllUpOrDownstreamNodesFromNodeIndex(
467 IN PMIXER_CONTEXT MixerContext
,
468 IN PTOPOLOGY Topology
,
471 OUT PULONG OutNodesCount
,
472 OUT PULONG OutNodes
);
475 MMixerIsNodeConnectedToPin(
476 IN PMIXER_CONTEXT MixerContext
,
477 IN PTOPOLOGY Topology
,
481 OUT PULONG bConnected
);
484 MMixerGetNodeIndexFromGuid(
485 IN PTOPOLOGY Topology
,
486 IN
const GUID
*NodeType
);
489 MMixerSetTopologyNodeReserved(
490 IN PTOPOLOGY Topology
,
494 MMixerIsTopologyNodeReserved(
495 IN PTOPOLOGY Topology
,
497 OUT PULONG bReserved
);
500 MMixerSetTopologyPinReserved(
501 IN PTOPOLOGY Topology
,
505 MMixerIsTopologyPinReserved(
506 IN PTOPOLOGY Topology
,
508 OUT PULONG bReserved
);
511 MMixerGetTopologyPinCount(
512 IN PTOPOLOGY Topology
,
513 OUT PULONG PinCount
);
516 MMixerGetConnectedFromLogicalTopologyPins(
517 IN PTOPOLOGY Topology
,
519 OUT PULONG OutPinCount
,
523 MMixerPrintTopology();
525 #endif /* _MMIXER_PCH_ */