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 IN OUT LPMIXER_INFO MixerInfo
,
360 IN PVOID MixerEventContext
,
361 IN PMIXER_EVENT MixerEventRoutine
);
365 IN PMIXER_CONTEXT MixerContext
,
366 OUT LPWSTR DeviceName
,
370 MMixerGetDeviceNameWithComponentId(
371 IN PMIXER_CONTEXT MixerContext
,
373 OUT LPWSTR DeviceName
);
376 MMixerInitializePinConnect(
377 IN OUT PKSPIN_CONNECT PinConnect
,
381 MMixerGetPinDataFlowAndCommunication(
382 IN PMIXER_CONTEXT MixerContext
,
385 OUT PKSPIN_DATAFLOW DataFlow
,
386 OUT PKSPIN_COMMUNICATION Communication
);
389 MMixerHandleAlternativeMixers(
390 IN PMIXER_CONTEXT MixerContext
,
391 IN PMIXER_LIST MixerList
,
392 IN LPMIXER_DATA MixerData
,
393 IN PTOPOLOGY Topology
);
396 MMixerGetMixerByName(
397 IN PMIXER_LIST MixerList
,
399 OUT LPMIXER_INFO
*MixerInfo
);
404 MMixerCreateTopology(
405 IN PMIXER_CONTEXT MixerContext
,
407 IN PKSMULTIPLE_ITEM NodeConnections
,
408 IN PKSMULTIPLE_ITEM NodeTypes
,
409 OUT PTOPOLOGY
*OutTopology
);
412 MMixerGetAllUpOrDownstreamPinsFromNodeIndex(
413 IN PMIXER_CONTEXT MixerContext
,
414 IN PTOPOLOGY Topology
,
417 OUT PULONG OutPinsCount
,
421 MMixerGetAllUpOrDownstreamPinsFromPinIndex(
422 IN PMIXER_CONTEXT MixerContext
,
423 IN PTOPOLOGY Topology
,
426 OUT PULONG OutPinsCount
,
430 MMixerGetNextNodesFromPinIndex(
431 IN PMIXER_CONTEXT MixerContext
,
432 IN PTOPOLOGY Topology
,
435 OUT PULONG OutNodesCount
,
436 OUT PULONG OutNodes
);
439 MMixerAllocateTopologyPinArray(
440 IN PMIXER_CONTEXT MixerContext
,
441 IN PTOPOLOGY Topology
,
442 OUT PULONG
* OutPins
);
445 MMixerAllocateTopologyNodeArray(
446 IN PMIXER_CONTEXT MixerContext
,
447 IN PTOPOLOGY Topology
,
448 OUT PULONG
* OutPins
);
451 MMixerGetAllUpOrDownstreamNodesFromPinIndex(
452 IN PMIXER_CONTEXT MixerContext
,
453 IN PTOPOLOGY Topology
,
456 OUT PULONG OutNodesCount
,
457 OUT PULONG OutNodes
);
460 MMixerIsNodeTerminator(
461 IN PTOPOLOGY Topology
,
463 OUT ULONG
* bTerminator
);
466 MMixerGetNextNodesFromNodeIndex(
467 IN PMIXER_CONTEXT MixerContext
,
468 IN PTOPOLOGY Topology
,
471 OUT PULONG OutNodesCount
,
472 OUT PULONG OutNodes
);
475 MMixerGetNodeTypeFromTopology(
476 IN PTOPOLOGY Topology
,
480 MMixerGetAllUpOrDownstreamNodesFromNodeIndex(
481 IN PMIXER_CONTEXT MixerContext
,
482 IN PTOPOLOGY Topology
,
485 OUT PULONG OutNodesCount
,
486 OUT PULONG OutNodes
);
489 MMixerIsNodeConnectedToPin(
490 IN PMIXER_CONTEXT MixerContext
,
491 IN PTOPOLOGY Topology
,
495 OUT PULONG bConnected
);
498 MMixerGetNodeIndexFromGuid(
499 IN PTOPOLOGY Topology
,
500 IN
const GUID
*NodeType
);
503 MMixerSetTopologyNodeReserved(
504 IN PTOPOLOGY Topology
,
508 MMixerIsTopologyNodeReserved(
509 IN PTOPOLOGY Topology
,
511 OUT PULONG bReserved
);
514 MMixerSetTopologyPinReserved(
515 IN PTOPOLOGY Topology
,
519 MMixerIsTopologyPinReserved(
520 IN PTOPOLOGY Topology
,
522 OUT PULONG bReserved
);
525 MMixerGetTopologyPinCount(
526 IN PTOPOLOGY Topology
,
527 OUT PULONG PinCount
);
530 MMixerGetConnectedFromLogicalTopologyPins(
531 IN PTOPOLOGY Topology
,
533 OUT PULONG OutPinCount
,
537 MMixerPrintTopology();
539 #endif /* _MMIXER_PCH_ */