ACMDM_STREAM_UNPREPARE (Compact 2013)
3/26/2014
This message requests an ACM driver to clear the preparation of the buffers associated with an ACMDRVSTREAMHEADER structure.
Parameters
- dwDeviceID
Value that specifies a driver instance identifier. The driver returns this value in response to the ACM_Open (ACM Driver) function.
- hDriver
Handle to a driver.
- uMsg
Value that specifies this message.
- lParam1
Pointer to an ACMDRVSTREAMINSTANCE structure.
- lParam2
Pointer to an ACMDRVSTREAMHEADER structure.
Return Values
A return value of 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.
Remarks
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 acmStreamUnprepareHeader function. Support for this message is optional. However, if a driver supports ACMDM_STREAM_PREPARE, it must support this message.
If the driver returns MMSYSERR_NOTSUPPORTED, the ACM clears the buffer preparation. For most drivers, this behavior is sufficient. If the driver does clear buffer preparation, it returns MMSYSERR_NOERROR. In either case, the ACM clears ACMSTREAMHEADER_STATUSF_PREPARED in the fdwStatus memberof ACMDRVSTREAMHEADER. The driver never modifies this flag. If you want both your driver and the ACM to clear buffer preparations, the driver returns MMSYSERR_NOTSUPPORTED after clearing its preparation. The ACM can then clear its preparation.
Before calling the driver's ACM_IOControl function, the ACM verifies that the following conditions have been met:
- ACMDRVSTREAMHEADER is readable and writable.
- The cbStruct member of the structure contains a size value that is at least as large as the structure's defined size.
- The buffers have been previously prepared.
- The buffer addresses and sizes match those specified when the buffers were prepared.
- The buffers are not currently in use by an asynchronous driver, based on the ACMSTREAMHEADER_STATUSF_INQUEUE flag value of the structure.
Requirements
Header |
msacmdrv.h |
See Also
Reference
ACM Driver Messages
ACM_Open (ACM Driver)
ACMDRVSTREAMINSTANCE
ACMDRVSTREAMHEADER
ACM_IOControl