Changeset 3925 for trunk/src/msacm32/driver.cpp
- Timestamp:
- Aug 2, 2000, 5:51:35 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/msacm32/driver.cpp
r2103 r3925 1 /* $Id: driver.cpp,v 1.3 2000-08-02 15:49:31 bird Exp $ */ 1 2 /* 2 3 * MSACM32 library … … 21 22 22 23 DEFAULT_DEBUG_CHANNEL(msacm) 23 24 24 25 /*********************************************************************** 25 26 * acmDriverAddA (MSACM32.2) … … 30 31 if (!phadid) 31 32 return MMSYSERR_INVALPARAM; 32 33 33 34 /* Check if any unknown flags */ 34 if (fdwAdd & 35 if (fdwAdd & 35 36 ~(ACM_DRIVERADDF_FUNCTION|ACM_DRIVERADDF_NOTIFYHWND| 36 37 ACM_DRIVERADDF_GLOBAL)) 37 38 return MMSYSERR_INVALFLAG; 38 39 39 40 /* Check if any incompatible flags */ 40 if ((fdwAdd & ACM_DRIVERADDF_FUNCTION) && 41 if ((fdwAdd & ACM_DRIVERADDF_FUNCTION) && 41 42 (fdwAdd & ACM_DRIVERADDF_NOTIFYHWND)) 42 43 return MMSYSERR_INVALFLAG; 43 44 /* FIXME: in fact, should GetModuleFileName(hinstModule) and do a 44 45 /* FIXME: in fact, should GetModuleFileName(hinstModule) and do a 45 46 * LoadDriver on it, to be sure we can call SendDriverMessage on the 46 47 * hDrvr handle. 47 48 */ 48 49 *phadid = (HACMDRIVERID) MSACM_RegisterDriver(NULL, NULL, hinstModule); 49 50 50 51 /* FIXME: lParam, dwPriority and fdwAdd ignored */ 51 52 52 53 return MMSYSERR_NOERROR; 53 54 } … … 63 64 dprintf(("(%p, 0x%08x, %ld, %ld, %ld): stub\n", 64 65 phadid, hinstModule, lParam, dwPriority, fdwAdd)); 65 66 66 67 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 67 68 return MMSYSERR_ERROR; … … 75 76 PWINE_ACMDRIVER p; 76 77 PWINE_ACMDRIVER* tp; 77 78 78 79 if (fdwClose) 79 80 return MMSYSERR_INVALFLAG; 80 81 81 82 p = MSACM_GetDriver(had); 82 83 if (!p) … … 89 90 } 90 91 } 91 92 92 93 if (p->hDrvr && !p->obj.pACMDriverID->pACMDriverList) 93 94 CloseDriver(p->hDrvr, 0, 0); 94 95 95 96 HeapFree(MSACM_hHeap, 0, p); 96 97 97 98 return MMSYSERR_NOERROR; 98 99 } … … 105 106 MMRESULT mmr; 106 107 ACMDRIVERDETAILSW addw; 107 108 108 109 addw.cbStruct = sizeof(addw); 109 110 mmr = acmDriverDetailsW(hadid, &addw, fdwDetails); 110 111 if (mmr == 0) { 111 padd->fccType = addw.fccType; 112 padd->fccComp = addw.fccComp; 113 padd->wMid = addw.wMid; 114 padd->wPid = addw.wPid; 115 padd->vdwACM = addw.vdwACM; 116 padd->vdwDriver = addw.vdwDriver; 117 padd->fdwSupport = addw.fdwSupport; 118 padd->cFormatTags = addw.cFormatTags; 119 padd->cFilterTags = addw.cFilterTags; 120 padd->hicon = addw.hicon; 112 padd->fccType = addw.fccType; 113 padd->fccComp = addw.fccComp; 114 padd->wMid = addw.wMid; 115 padd->wPid = addw.wPid; 116 padd->vdwACM = addw.vdwACM; 117 padd->vdwDriver = addw.vdwDriver; 118 padd->fdwSupport = addw.fdwSupport; 119 padd->cFormatTags = addw.cFormatTags; 120 padd->cFilterTags = addw.cFilterTags; 121 padd->hicon = addw.hicon; 121 122 lstrcpyWtoA(padd->szShortName, addw.szShortName); 122 123 lstrcpyWtoA(padd->szLongName, addw.szLongName); … … 135 136 HACMDRIVER acmDrvr; 136 137 MMRESULT mmr; 137 138 138 139 if (fdwDetails) 139 140 return MMSYSERR_INVALFLAG; 140 141 141 142 mmr = acmDriverOpen(&acmDrvr, hadid, 0); 142 143 if (mmr == 0) { 143 144 mmr = (MMRESULT)acmDriverMessage(acmDrvr, ACMDM_DRIVER_DETAILS, (LPARAM) padd, 0); 144 145 145 146 acmDriverClose(acmDrvr, 0); 146 147 } 147 148 148 149 return mmr; 149 150 } … … 160 161 return MMSYSERR_INVALPARAM; 161 162 } 162 163 163 164 if (fdwEnum && ~(ACM_DRIVERENUMF_NOLOCAL|ACM_DRIVERENUMF_DISABLED)) { 164 165 return MMSYSERR_INVALFLAG; 165 166 } 166 167 167 168 for (p = MSACM_pFirstACMDriverID; p; p = p->pNextACMDriverID) { 168 169 fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; … … 175 176 (*fnCallback)((HACMDRIVERID) p, dwInstance, fdwSupport); 176 177 } 177 178 178 179 return MMSYSERR_NOERROR; 179 180 } … … 185 186 { 186 187 PWINE_ACMOBJ pao; 187 188 188 189 pao = MSACM_GetObj(hao); 189 190 if (!pao) 190 191 return MMSYSERR_INVALHANDLE; 191 192 192 193 if (!phadid) 193 194 return MMSYSERR_INVALPARAM; 194 195 195 196 if (fdwDriverID) 196 197 return MMSYSERR_INVALFLAG; 197 198 198 199 *phadid = (HACMDRIVERID) pao->pACMDriverID; 199 200 200 201 return MMSYSERR_NOERROR; 201 202 } … … 211 212 if (!pad) 212 213 return MMSYSERR_INVALPARAM; 213 214 214 215 /* FIXME: Check if uMsg legal */ 215 216 216 217 if (!SendDriverMessage(pad->hDrvr, uMsg, lParam1, lParam2)) 217 218 return MMSYSERR_NOTSUPPORTED; 218 219 219 220 return MMSYSERR_NOERROR; 220 221 } … … 233 234 if (!phad) 234 235 return MMSYSERR_INVALPARAM; 235 236 padid = MSACM_GetDriverID(hadid); 236 237 padid = MSACM_GetDriverID(hadid); 237 238 if (!padid) 238 239 return MMSYSERR_INVALHANDLE; 239 240 240 241 if (fdwOpen) 241 242 return MMSYSERR_INVALFLAG; 242 243 243 244 pad = PWINE_ACMDRIVER(HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVER))); 244 245 if (!pad) return MMSYSERR_NOMEM; 245 246 246 247 pad->obj.pACMDriverID = padid; 247 248 248 249 if (!padid->hInstModule) 249 250 pad->hDrvr = OpenDriverA(padid->pszDriverAlias, "drivers32", 0); 250 251 else 251 252 pad->hDrvr = padid->hInstModule; 252 253 253 254 if (!pad->hDrvr) { 254 255 HeapFree(MSACM_hHeap, 0, pad); 255 256 return MMSYSERR_ERROR; 256 257 } 257 258 258 259 // pad->pfnDriverProc = GetProcAddress(pad->hDrvr, "DriverProc"); 259 260 … … 264 265 /* FIXME: Create a WINE_ACMDRIVER32 */ 265 266 *phad = (HACMDRIVER)pad; 266 267 267 268 // return MMSYSERR_NOERROR; 268 269 return MMSYSERR_ERROR; … … 281 282 HKEY hPriorityKey; 282 283 DWORD dwPriorityCounter; 283 284 284 285 padid = MSACM_GetDriverID(hadid); 285 286 if (!padid) 286 287 return MMSYSERR_INVALHANDLE; 287 288 288 289 /* Check for unknown flags */ 289 if (fdwPriority & 290 if (fdwPriority & 290 291 ~(ACM_DRIVERPRIORITYF_ENABLE|ACM_DRIVERPRIORITYF_DISABLE| 291 292 ACM_DRIVERPRIORITYF_BEGIN|ACM_DRIVERPRIORITYF_END)) 292 293 return MMSYSERR_INVALFLAG; 293 294 294 295 /* Check for incompatible flags */ 295 296 if ((fdwPriority & ACM_DRIVERPRIORITYF_ENABLE) && 296 297 (fdwPriority & ACM_DRIVERPRIORITYF_DISABLE)) 297 298 return MMSYSERR_INVALFLAG; 298 299 299 300 /* Check for incompatible flags */ 300 301 if ((fdwPriority & ACM_DRIVERPRIORITYF_BEGIN) && 301 302 (fdwPriority & ACM_DRIVERPRIORITYF_END)) 302 303 return MMSYSERR_INVALFLAG; 303 304 lError = RegOpenKeyA(HKEY_CURRENT_USER, 304 305 lError = RegOpenKeyA(HKEY_CURRENT_USER, 305 306 "Software\\Microsoft\\Multimedia\\" 306 307 "Audio Compression Manager\\Priority v4.00", … … 310 311 if (lError != ERROR_SUCCESS) 311 312 return MMSYSERR_ERROR; 312 313 313 314 for (dwPriorityCounter = 1; ; dwPriorityCounter++) { 314 315 wsnprintfA(szSubKey, 17, "Priorty%ld", dwPriorityCounter); … … 316 317 if (lError != ERROR_SUCCESS) 317 318 break; 318 319 dprintf(("(0x%08x, %ld, %ld): stub (partial)\n", 319 320 dprintf(("(0x%08x, %ld, %ld): stub (partial)\n", 320 321 hadid, dwPriority, fdwPriority)); 321 322 break; 322 323 } 323 324 324 325 RegCloseKey(hPriorityKey); 325 326 326 327 return MMSYSERR_ERROR; 327 328 } … … 333 334 { 334 335 PWINE_ACMDRIVERID padid; 335 336 336 337 padid = MSACM_GetDriverID(hadid); 337 338 if (!padid) 338 339 return MMSYSERR_INVALHANDLE; 339 340 340 341 if (fdwRemove) 341 342 return MMSYSERR_INVALFLAG; 342 343 343 344 MSACM_UnregisterDriver(padid); 344 345 return MMSYSERR_NOERROR; 346 } 347 345 346 return MMSYSERR_NOERROR; 347 } 348
Note:
See TracChangeset
for help on using the changeset viewer.