Please help. How do i use acmFormatEnum?
-
I'm trying to enumerate all the different formats for a specific format type, but every time i run the
acmFormatEnum
function it returnsMMSYSERR_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
-
I'm trying to enumerate all the different formats for a specific format type, but every time i run the
acmFormatEnum
function it returnsMMSYSERR_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
Doesn't the MSDN sample ACMapp display how to do this???