Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than winmm, prefix the name with the module name and a period.

waveinopen (winmm)

.

Summary

The waveInOpen function opens the given waveform-audio input device for recording.

By : Demitrius Wheelwright

C# Signature:

/// <summary>
/// The waveInOpen function opens the given waveform-audio input device for recording. Then returning the devide id.
/// </summary>
/// <param name="hWaveIn">
/// Pointer to a buffer that receives a handle identifying the open waveform-audio input device. Use this
/// handle to identify the device when calling other waveform-audio input functions. This parameter can be NULL if WAVE_FORMAT_QUERY
/// is specified for dwFlags
/// </param>
/// <param name="deviceId">
/// Identifier of the waveform-audio input device to open. It can be either a device identifier or a handle of an open waveform-audio
/// input device. You can use the following flag instead of a device identifier.
/// </param>
/// <param name="wfx">
/// Pointer to a WAVEFORMATEX structure that identifies the desired format for recording waveform-audio data.
/// You can free this structure immediately after waveInOpen returns.
/// </param>
/// <param name="dwCallBack">
/// Pointer to a fixed callback function, an event handle, a handle to a window, or the identifier of a thread to be called during
/// waveform-audio recording to process messages related to the progress of recording. If no callback function is required, this
/// value can be zero. For more information on the callback function, see waveInProc.
/// </param>
/// <param name="dwInstance">
/// User-instance data passed to the callback mechanism. This parameter is not used with the window callback mechanism.
/// </param>
/// <param name="dwFlags">
/// Flags for opening the device. The following values are defined.
/// </param>
/// <returns></returns>
[DllImport("winmm.dll")]
private static extern uint waveInOpen(ref IntPtr hWaveIn, uint deviceId, ref WAVEFORMATEX wfx, IntPtr dwCallBack, uint dwInstance, uint dwFlags);

Alternative Managed API:

Notes:

It is key to use the ref keyword with 'hWaveIn' and 'wfx' or else you return value will always be 11 (MMSYSERR_INVALPARAM).

Tips & Tricks:

Please add some!

Sample Code:

/// <summary>

/// The waveInOpen function opens the given waveform-audio input device for recording. Then returning the devide id.
/// </summary>
/// <param name="hWaveIn">
/// Pointer to a buffer that receives a handle identifying the open waveform-audio input device. Use this
/// handle to identify the device when calling other waveform-audio input functions. This parameter can be NULL if WAVE_FORMAT_QUERY
/// is specified for dwFlags
/// </param>
/// <param name="deviceId">
/// Identifier of the waveform-audio input device to open. It can be either a device identifier or a handle of an open waveform-audio
/// input device. You can use the following flag instead of a device identifier.
/// </param>
/// <param name="wfx">
/// Pointer to a WAVEFORMATEX structure that identifies the desired format for recording waveform-audio data.
/// You can free this structure immediately after waveInOpen returns.
/// </param>
/// <param name="dwCallBack">
/// Pointer to a fixed callback function, an event handle, a handle to a window, or the identifier of a thread to be called during
/// waveform-audio recording to process messages related to the progress of recording. If no callback function is required, this
/// value can be zero. For more information on the callback function, see waveInProc.
/// </param>
/// <param name="dwInstance">
/// User-instance data passed to the callback mechanism. This parameter is not used with the window callback mechanism.
/// </param>
/// <param name="dwFlags">
/// Flags for opening the device. The following values are defined.
/// </param>
/// <returns></returns>
[DllImport("winmm.dll")]
private static extern uint waveInOpen(ref IntPtr hWaveIn, uint deviceId, ref WAVEFORMATEX wfx, IntPtr dwCallBack, uint dwInstance, uint dwFlags);

/// <summary>
/// Prefered structure to use with API call waveInOpen.
/// Needed to encapsulate wave format data.
/// </summary>
public struct WAVEFORMATEX
{
public short wFormatTag;
public short nChannels;
public uint nSamplesPerSec;
public uint nAvgBytesPerSec;
public short nBlockAlign;
public short wBitsPerSample;
public short cbSize;
}