X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=dll%2Fwin32%2Fmciavi32%2Finfo.c;h=3d138b1dddd12e027cff2e1710a8c5e132cf6b7d;hp=b2ec0308cddd3602bcf0173524af47969bbbc03d;hb=ba65d708f669a5d3a9c929a23c25c308e3d4c7cb;hpb=551ad41c6e48f490168f2e74b0ccb91a74c20860 diff --git a/dll/win32/mciavi32/info.c b/dll/win32/mciavi32/info.c index b2ec0308cdd..3d138b1dddd 100644 --- a/dll/win32/mciavi32/info.c +++ b/dll/win32/mciavi32/info.c @@ -74,7 +74,7 @@ DWORD MCIAVI_ConvertTimeFormatToFrame(WINE_MCIAVI* wma, DWORD val) 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); @@ -175,7 +175,6 @@ DWORD MCIAVI_mciGetDevCaps(UINT wDevID, DWORD dwFlags, LPMCI_GETDEVCAPS_PARMS l /* w2k does not know MAX_WINDOWS or MAX/MINIMUM_RATE */ default: FIXME("Unknown capability (%08x) !\n", lpParms->dwItem); - ret = MCIERR_UNSUPPORTED_FUNCTION; break; } } @@ -193,6 +192,7 @@ DWORD MCIAVI_mciInfo(UINT wDevID, DWORD dwFlags, LPMCI_DGV_INFO_PARMSW lpParms) 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; @@ -205,22 +205,19 @@ DWORD MCIAVI_mciInfo(UINT wDevID, DWORD dwFlags, LPMCI_DGV_INFO_PARMSW lpParms) 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; }