I'm trying to enumerate all the different formats for a specific format type, but every time i run the acmFormatEnum
function it returns MMSYSERR_INVALPARAM
meaning "At least one parameter is invalid.". Anyone know how to use that function? Anyone have some examples? All help is greatly appreciated, here's my code. I start by running the TagEnum function:
ACMFORMATTAGDETAILS acmTagDetails;
void TagEnum()
{
HACMDRIVER hAcm;
acmDriverOpen(&hAcm, id, 0);
acmTagDetails.cbStruct = sizeof(ACMFORMATTAGDETAILS);
acmFormatTagEnum(hAcm, &acmTagDetails, acmTagCallback, NULL, 0);
acmDriverClose(hAcm, 0);
}
BOOL WINAPI acmTagCallback(HACMDRIVERID hadid, LPACMFORMATTAGDETAILS paftd, DWORD dwInstance,DWORD fdwSupport)
{
ACMFORMATDETAILS acmFormat;
WAVEFORMATEX waveFormat = { 0 };
HACMDRIVER hAcm;
memset(&acmFormat, 0, sizeof(acmFormat));
acmFormat.cbStruct = sizeof(acmFormat);
acmFormat.cbwfx = sizeof(waveFormat);
acmFormat.pwfx = &waveFormat;
acmFormat.dwFormatTag = acmTagDetails.dwFormatTag;
waveFormat.wFormatTag = acmTagDetails.dwFormatTag;
acmDriverOpen(&hAcm, hadid, 0);
acmFormatEnum(hAcm, &acmFormat, formatCallback, NULL, ACM\_FORMATENUMF\_WFORMATTAG);
acmDriverClose(hAcm, 0);
return TRUE;
}
BOOL WINAPI formatCallback(HACMDRIVERID hadid, LPACMFORMATDETAILS pafd, DWORD dwInstance, DWORD fdwSupport)
{
ACMDRIVERDETAILS details;
details.cbStruct = sizeof(details);
acmDriverDetails(hadid, &details, NULL);
SendMessage(GetDlgItem(ghWnd, IDC\_FORMATS), LB\_INSERTSTRING, 0, (LPARAM)details.szLongName);
return TRUE;
}
id is a HACMDRIVERID holding a valid driver id of a driver. Anyone have a clue what could be wrong or have some examples? All help is apprecaited. -Rune Svendsen