public Device() : base("Windows Audio") { List <Channel> channels = new List <Channel>(); int count = Winmm.waveOutGetNumDevs(); for (int i = 0; i < count; ++i) { WAVEOUTCAPS caps = new WAVEOUTCAPS(); MmException.CheckThrow(Winmm.waveOutGetDevCaps(new IntPtr(i), ref caps, (uint)Marshal.SizeOf(caps))); channels.Add(new Channel(caps.szPname, i)); } outputs = channels.ToArray(); channels = new List <Channel>(); count = Winmm.waveInGetNumDevs(); for (int i = 0; i < count; ++i) { WAVEINCAPS caps = new WAVEINCAPS(); MmException.CheckThrow(Winmm.waveInGetDevCaps(new IntPtr(i), ref caps, (uint)Marshal.SizeOf(caps))); channels.Add(new Channel(caps.szPname, i)); } inputs = channels.ToArray(); }
public static extern MMRESULT waveInGetDevCaps(IntPtr hwo, ref WAVEINCAPS pwic, uint cbwoc);