public MIXERLINE[] GetAllMixerLineInfo() { // First get the capabilities, because that will tell // us how many lines there are. // The MIXERCAPS.cDestinations tells us how many lines there are MIXERCAPS caps = MixerCapabilities; List<MIXERLINE> allLines = new List<MIXERLINE>(); for (int i = 0; i < caps.cDestinations; i++) { // Get destination information MIXERLINE aLine = new MIXERLINE(); aLine.Init(); aLine.dwDestination = (uint)i; int result = winmm.mixerGetLineInfo(fDeviceHandle, ref aLine, 0); allLines.Add(aLine); // For each of the connections on the line, get the source line // information for (int connection = 0; connection < aLine.cConnections; connection++) { MIXERLINE srcLine = new MIXERLINE(); srcLine.Init(); aLine.dwDestination = (uint)i; int srcResult = winmm.mixerGetLineInfo(fDeviceHandle, ref srcLine, winmm.MIXER_GETLINEINFOF_SOURCE); allLines.Add(srcLine); } } return allLines.ToArray(); }
public static extern int mixerGetLineInfo(IntPtr hmxobj, ref MIXERLINE pmxl, int fdwInfo);