DWORD MCIAVI_mciGetDevCaps(UINT wDevID, DWORD dwFlags, LPMCI_GETDEVCAPS_PARMS lpParms)
{
WINE_MCIAVI* wma = MCIAVI_mciGetOpenDev(wDevID);
- DWORD ret;
+ DWORD ret = MCIERR_UNSUPPORTED_FUNCTION;
TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms);
/* w2k does not know MAX_WINDOWS or MAX/MINIMUM_RATE */
default:
FIXME("Unknown capability (%08x) !\n", lpParms->dwItem);
- ret = MCIERR_UNSUPPORTED_FUNCTION;
break;
}
}
WINE_MCIAVI* wma = MCIAVI_mciGetOpenDev(wDevID);
DWORD ret = 0;
static const WCHAR wszAviPlayer[] = {'W','i','n','e','\'','s',' ','A','V','I',' ','p','l','a','y','e','r',0};
+ static const WCHAR wszVersion[] = {'1','.','1',0};
if (lpParms == NULL || lpParms->lpstrReturn == NULL)
return MCIERR_NULL_PARAMETER_BLOCK;
if (dwFlags & MCI_INFO_PRODUCT)
str = wszAviPlayer;
+ else if (dwFlags & MCI_INFO_VERSION)
+ str = wszVersion;
else if (dwFlags & MCI_INFO_FILE)
str = wma->lpFileName;
else {
WARN("Don't know this info command (%u)\n", dwFlags);
ret = MCIERR_UNRECOGNIZED_COMMAND;
}
- if (str) {
- if (strlenW(str) + 1 > lpParms->dwRetSize) {
- ret = MCIERR_PARAM_OVERFLOW;
- } else {
- lstrcpynW(lpParms->lpstrReturn, str, lpParms->dwRetSize);
- }
- } else {
- lpParms->lpstrReturn[0] = 0;
+ if (!ret) {
+ WCHAR zero = 0;
+ /* Only mciwave, mciseq and mcicda set dwRetSize (since NT). */
+ lstrcpynW(lpParms->lpstrReturn, str ? str : &zero, lpParms->dwRetSize);
}
-
LeaveCriticalSection(&wma->cs);
return ret;
}