Microsoft Windows CE 3.0  


This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

This message is used in an MMDRV_MESSAGE_PARAMSstructure passed to the WAV_IOControlfunction to request a waveform output driver to write a waveform data block to the specified device.


Device identifier — 0, 1, 2, and so on — for the target device.
Specifies this message.
Specifies a device instance identifier.
Pointer to a WAVEHDRstructure identifying the buffer.
Specifies the size, in bytes, of WAVEHDR.

Return Values

MMSYSERR_NOERROR indicates success. Otherwise, the driver returns one of the MMSYSERR or WAVEERR error values declared in the Mmsystem.h header file.


The ACM sends this message by calling the audio driver's WAV_IOControlentry point through the DeviceIoControlfunction.

If the WHDR_PREPARED flag in the dwFlagsmember of WAVEHDRis not set, the driver returns WAVERR_UNPREPARED.

Unless the device has been paused with a WODM_PAUSE message, the driver begins playback the first time it receives this message.

Waveform output drivers handle output asynchronously by creating a separate thread to handle communication with the hardware. Typically, the original thread queues the output buffer, sets its WHDR_INQUEUE flag, clears its WHDR_DONE flag in WAVEHDR, and returns control to the client.

The driver continues sending buffers to the audio circuit until the client sends WODM_PAUSE or WIDM_RESET.

The driver usually is responsible for implementing waveform looping. The driver should check each buffer's WAVEHDRstructure for WHDR_BEGINLOOP and WHDR_ENDLOOP flags, along with an iteration count in the dwLoopsmember of the structure.


Runs on Versions Defined in Include Link to
Windows CE OS 1.0 and later      
Note   This API is part of the complete Windows CE OS package as provided by Microsoft. The functionality of a particular platform is determined by the original equipment manufacturer (OEM) and some devices may not support this API.

 Last updated on Tuesday, July 13, 2004

© 2004 Microsoft Corporation. All rights reserved.