This message requests an ACM driver to perform a conversion operation on a specified conversion stream.
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_IOControl entry point through the DeviceIoControl function. The ACM sends this message when an application calls the acmStreamConvert function.
All ACM drivers that provide stream conversions must support this message. For more information about stream conversions, see the Windows NT DDK.
The ACMDRVSTREAMINSTANCE structure 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.
ACMDRVSTREAMHEADER identifies 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 fdwConvert member 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 fdwOpen member of ACMDRVSTREAMINSTANCE, the driver must take the following actions when it has finished converting the data in the source buffer:
Along with the padshNext member 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_IOControl function, the ACM should verify the following conditions: