ACMDM_FORMATTAG_DETAILS
This message requests an ACM driver to return information about a format tag.
Parameters
- dwDriverID
- Specifies a driver instance identifier. The driver returns this value in response to the ACM_Open function.
- hDriver
- Handle to a driver.
- uMsg
- Specifies this message.
- lParam1
- Pointer to an ACMFORMATTAGDETAILS structure. ACMFORMATTAGDETAILS is declared in the Msacm.h header file.
- lParam2
- Contains one of the following flags specified by the fdwDetails parameter of the acmFormatTagDetails function:
- ACM_FORMATTAGDETAILSF_INDEX
- Indicates that the dwFormatTagIndex member of ACMFORMATTAGDETAILS contains a format tag index. The valid index range is from 0 to 1 less than the cFormatTags member returned in the driver’s ACMDRIVERDETAILS structure.
The driver should return details for the format tag associated with the index.
- ACM_FORMATTAGDETAILSF_FORMATTAG
- Indicates that the dwFormatTag member of ACMFORMATTAGDETAILS contains a format tag.
The driver returns details for the specified format tag.
- ACM_FORMATTAGDETAILSF_LARGESTSIZE
- Indicates that the driver should return details for the format tag that has the largest format. The dwFormatTag member of ACMFORMATTAGDETAILS can contain a format tag or WAVE_FORMAT_UNKNOWN.
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 following are possible error values.
- MMSYSERR_NOTSUPPORTED
- The driver does not support the specified query operation.
- ACMERR_NOTPOSSIBLE
- The input parameter values do not represent valid formats or format tags.
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 acmFormatTagDetails function.
All ACM drivers must support this message.
The client specifies the format tag in the dwFormatTag member of ACMFORMATTAGDETAILS. The driver returns the following information for a particular tag:
- If the ACM_FORMATDETAILSF_INDEX flag is set, the client has specified an index value in the dwFormatTagIndex member of ACMFORMATTAGDETAILS. The driver fills in ACMFORMATTAGDETAILS for the format tag associated with the specified index value.
- If the ACM_FORMATTAGDETAILSF_FORMATTAG flag is set, the client has specified a format tag in the dwFormatTag member of ACMFORMATTAGDETAILS. The driver fills in the ACMFORMATTAGDETAILS for the specified format tag.
- If the ACM_FORMATTAGDETAILSF_LARGESTSIZE flag is set, the driver performs one of two actions:
- If dwFormatTag contains WAVE_FORMAT_UNKNOWN, the driver fills in ACMFORMATTAGDETAILS for the format tag that has a format with the largest format structure size.
- If dwFormatTag contains a format tag, the driver fills in ACMFORMATTAGDETAILS for that format tag, describing the format with the largest structure size belonging to the specified tag.
Before calling the driver’s ACM_IOControl function, the ACM verifies the following conditions:
- ACMFORMATTAGDETAILS is readable and writeable.
- The size of ACMFORMATTAGDETAILS, contained in its cbStruct member, is at least as large as the structure’s defined size. The structure’s size can be larger than its defined size, to allow for a longer szFormatTag member or to enable newer, larger structure definitions to be used within drivers under development.
- The fdwSupport member of ACMFORMATTAGDETAILS contains 0.
- The lParam2 parameter contains a valid flag value.
If the format tag is WAVE_FORMAT_PCM, the driver return a 0-length string in szFormatTag. The ACM provides a description string for this format.
Before returning, the driver must set the cbStruct member of ACMFORMATTAGDETAILS to the actual number of bytes returned. The value returned in cbStruct must not be greater than the value received.
For more information about format tags and filter tags, see the Windows NT DDK.
See Also
ACMDM_DRIVER_DETAILS