ACMDM_FILTER_DETAILS
This message requests an ACM driver to return information about a filter associated with a specified filter 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 ACMFILTERDETAILS structure. The structure is declared in the Msacm.h header file.
- lParam2
- Contains one of the following flags specified by the fdwDetails parameter of the acmFilterDetails function:
- ACM_FILTERDETAILSF_INDEX
- Indicates that the dwFilterIndex member of ACMFILTERDETAILS contains a filter index. The valid index range is from 0 to 1 less than the cStandardFilters member returned in the ACMFILTERTAGDETAILS structure for the filter tag.
- ACM_FILTERDETAILSF_FILTER
- Indicates that the client has filled in the WAVEFILTER structure associated with ACMFILTERDETAILS.
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 filter operations or the specified query operation.
- ACMERR_NOTPOSSIBLE
- The input parameter values do not represent valid filters or filter tags.
Remarks
The ACM (Waveapi.dll) sends the ACMDM_FILTER_DETAILS 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 acmFilterDetails function.
An ACM driver that provides filters must support this message.
The client can do either of the following:
- Specify a filter index to obtain a description of the filter associated with the index.
- Specify a filter description to validate the filter and obtain the filter’s string description.
The client specifies the filter tag in the dwFilterTag member of ACMFILTERDETAILS. The driver returns the following information for a particular filter belonging to the filter tag:
- If the ACM_FILTERDETAILSF_INDEX flag is set, the client has specified an index value in the dwFilterIndex member of ACMFILTERDETAILS. The driver fills in WAVEFILTER for the filter associated with the specified index value. It also fills in the szFilter, fdwSupport, and cbStruct members of ACMFILTERDETAILS.
- If the ACM_FILTERDETAILSF_FILTER flag is set, the client has filled in WAVEFILTER. The driver validates the contents of the structure and fills in the szFilter, fdwSupport, and cbStruct members of ACMFILTERDETAILS.
Before calling the driver’s ACM_IOControl function, the ACM should verify the following conditions:
- ACMFILTERDETAILS and the associated WAVEFILTER structure are readable and writeable.
- The size of ACMFILTERDETAILS, contained in its cbStruct member, is at least as large as its defined size. The structure size can be larger than its defined size to allow for a longer szFilter member or to enable newer, larger structure definitions to be used within drivers under development.
- The size of WAVEFILTER, pointed to by the pwfltr member of ACMFILTERDETAILS, is at least as large as the generic WAVEFILTER structure’s defined size.
- The fdwSupport member of ACMFILTERDETAILS contains 0.
- The lParam2 parameter contains a valid flag value.
WAVEFILTER is a generic structure for describing a filter. Generally, extend this structure for your specific filter type. For examples, see VOLUMEWAVEFILTER and ECHOWAVEFILTER in the Mmreg.h header file. When a client sends an ACMDM_FILTER_DETAILS message, it specifies a pointer to a structure that you have defined for the specified filter type. This structure typically is larger than the generic WAVEFILTER.
Before returning, the driver must set the cbStruct member of ACMFILTERDETAILS to the actual number of bytes returned. The value returned in cbStruct must not be greater than the value received from the client.
For more information about format tags and filters, see the Windows NT DDK.
See Also
ACMDM_FILTERTAG_DETAILS