예제 #1
0
파일: OutputDevice.cs 프로젝트: desla/AS
        /// <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);
        }
예제 #2
0
파일: DllImports.cs 프로젝트: desla/AS
 public static extern uint waveOutOpen(ref IntPtr hWaveOut, uint uDeviceId, ref WAVEFORMATEX lpFormat,
     WaveOutProc dwCallback, IntPtr dwInstance, uint dwFlags);
예제 #3
0
파일: InputDevice.cs 프로젝트: desla/AS
        /// <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);
        }
예제 #4
0
파일: DllImports.cs 프로젝트: desla/AS
 public static extern uint waveInOpen(ref IntPtr hWaveIn, uint deviceId, ref WAVEFORMATEX lpFormat, 
     IntPtr dwCallBack, uint dwInstance, uint dwFlags);