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 requests an ACM driver to perform a conversion operation on a specified conversion stream.


Specifies a driver instance identifier. The driver returns this value in response to the ACM_Openfunction.
Handle to a driver.
Specifies this message.
Pointer to an ACMDRVSTREAMINSTANCEstructure.
Pointer to an ACMDRVSTREAMHEADERstructure.

Return Values

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


The ACM (Waveapi.dll) sends this message by calling the ACM driver's ACM_IOControlentry point through the DeviceIoControlfunction. The ACM sends this message when an application calls the acmStreamConvertfunction.

All ACM drivers that provide stream conversions must support this message. For more information about stream conversions, see the Windows NT DDK.

The ACMDRVSTREAMINSTANCEstructure received with this message is the same structure received with a previous ACMDM_STREAM_OPEN message. The driver does not need to validate the structure's contents again.

ACMDRVSTREAMHEADERidentifies the source and destination data buffers. The source buffer contains the data to be converted. The driver places converted data into the destination buffer.

The driver must check the flags in the fdwConvertmember of ACMDRVSTREAMHEADER. These flags indicate how converted data should be returned.

Because stream conversions are time-critical operations, ACMDM_STREAM_CONVERT messages must be processed efficiently. The driver should perform as much processing as possible in response to the ACMDM_STREAM_OPEN message.

If the driver supports asynchronous operations and the client has specified the ACM_STREAMOPENF_ASYNC flag, which is contained in the fdwOpenmember of ACMDRVSTREAMINSTANCE, the driver must take the following actions when it has finished converting the data in the source buffer:

  • Send the client an MM_ACM_DONE callback message by calling the PostThreadMessagefunction.

    Along with the padshNextmember of ACMDRVSTREAMHEADER, asynchronous drivers can use the ACMSTREAMHEADER_STATUSF_INQUEUE flag of the structure to maintain a conversion queue of stream header structures.

    Before calling the driver's ACM_IOControlfunction, the ACM should verify the following conditions: