/// <summary> /// Открывает устройство и запоминает его Handle. /// </summary> /// <param name="aDeviceId">Идентификатор устройства.</param> /// <returns>Если != 0 то произошла ошибка.</returns> private int OpenDevice(int aDeviceId) { var format = new WAVEFORMATEX { WFormatTag = (short)WAVEFORMATTAG.WAVE_FORMAT_PCM, NChannels = (short)channelsCount, NSamplesPerSec = samplePerSec, NAvgBytesPerSec = samplePerSec * bytePerSample * channelsCount, WBitsPerSample = (short)(8 * bytePerSample), NBlockAlign = (short)(bytePerSample * channelsCount), CbSize = 0 }; return (int)NativeMethods.waveOutOpen(ref this.handle, (uint)aDeviceId, ref format, null, (IntPtr)0, 0); }
public static extern uint waveOutOpen(ref IntPtr hWaveOut, uint uDeviceId, ref WAVEFORMATEX lpFormat, WaveOutProc dwCallback, IntPtr dwInstance, uint dwFlags);
/// <summary> /// Получает handle для физического устройства. /// </summary> /// <param name="aDeviceId">Идентификатор устройства в системе.</param> /// <returns>Результат. Если != 0, значит ошибка.</returns> private int OpenDevice(int aDeviceId) { var format = new WAVEFORMATEX { WFormatTag = (short)WAVEFORMATTAG.WAVE_FORMAT_PCM, NChannels = (short)channelsCount, NSamplesPerSec = samplePerSec, NAvgBytesPerSec = samplePerSec * bytePerSample * channelsCount, NBlockAlign = (short)(bytePerSample * channelsCount), WBitsPerSample = (short)(8 * bytePerSample), CbSize = 0 }; return (int)NativeMethods.waveInOpen(ref handle, (uint)aDeviceId, ref format, IntPtr.Zero, 0, (uint)WAVEINOPENFLAGS.WAVE_FORMAT_DIRECT); }
public static extern uint waveInOpen(ref IntPtr hWaveIn, uint deviceId, ref WAVEFORMATEX lpFormat, IntPtr dwCallBack, uint dwInstance, uint dwFlags);