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)
.
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);
MMSYSERR_VALNOTFOUND (MMSYSERR_BASE + 19) /* registry value not found */
MMSYSERR_NODRIVERCB (MMSYSERR_BASE + 20) /* driver does not call
MMSYSERR_MOREDATA (MMSYSERR_BASE + 21) /* more data to be returned */
MMSYSERR_LASTERROR (MMSYSERR_BASE + 21) /* last error in range */
CALLBACK_TYPEMASK 0x00070000l /* callback type mask */
CALLBACK_NULL 0x00000000l /* no callback */
CALLBACK_WINDOW 0x00010000l /* dwCallback is a HWND */
CALLBACK_TASK 0x00020000l /* dwCallback is a HTASK */
CALLBACK_FUNCTION 0x00030000l /* dwCallback is a FARPROC */
Alternative Managed API:
Microsoft.DirectX.DirectSound
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;
}
public enum MMSYSERR : uint
{
// Add MMSYSERR's here!
helpful tips or sample code to share for using this API in managed code?
corrections to the existing content?
variations of the signature you want to share?
additional languages you want to include?
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).