Ignore:
Timestamp:
Sep 5, 2001, 3:19:02 PM (24 years ago)
Author:
bird
Message:

Added $Id:$ keyword.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/msacm32/driver.c

    r5434 r6648  
    11/* -*- tab-width: 8; c-basic-offset: 4 -*- */
    2 
     2/* $Id: driver.c,v 1.2 2001-09-05 13:11:25 bird Exp $ */
    33/*
    44 *      MSACM32 library
    55 *
    66 *      Copyright 1998  Patrik Stridvall
    7  *                1999  Eric Pouech
     7 *        1999  Eric Pouech
    88 */
    99
     
    2929
    3030DEFAULT_DEBUG_CHANNEL(msacm);
    31        
     31
    3232/***********************************************************************
    3333 *           acmDriverAddA (MSACM32.2)
    3434 */
    3535MMRESULT WINAPI acmDriverAddA(PHACMDRIVERID phadid, HINSTANCE hinstModule,
    36                               LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
     36                  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
    3737{
    3838    if (!phadid)
    39         return MMSYSERR_INVALPARAM;
    40    
     39    return MMSYSERR_INVALPARAM;
     40
    4141    /* Check if any unknown flags */
    42     if (fdwAdd & 
    43         ~(ACM_DRIVERADDF_FUNCTION|ACM_DRIVERADDF_NOTIFYHWND|
    44           ACM_DRIVERADDF_GLOBAL))
    45         return MMSYSERR_INVALFLAG;
    46    
     42    if (fdwAdd &
     43    ~(ACM_DRIVERADDF_FUNCTION|ACM_DRIVERADDF_NOTIFYHWND|
     44      ACM_DRIVERADDF_GLOBAL))
     45    return MMSYSERR_INVALFLAG;
     46
    4747    /* Check if any incompatible flags */
    48     if ((fdwAdd & ACM_DRIVERADDF_FUNCTION) && 
    49         (fdwAdd & ACM_DRIVERADDF_NOTIFYHWND))
    50         return MMSYSERR_INVALFLAG;
    51    
    52     /* FIXME: in fact, should GetModuleFileName(hinstModule) and do a 
     48    if ((fdwAdd & ACM_DRIVERADDF_FUNCTION) &&
     49    (fdwAdd & ACM_DRIVERADDF_NOTIFYHWND))
     50    return MMSYSERR_INVALFLAG;
     51
     52    /* FIXME: in fact, should GetModuleFileName(hinstModule) and do a
    5353     * LoadDriver on it, to be sure we can call SendDriverMessage on the
    5454     * hDrvr handle.
    5555     */
    5656    *phadid = (HACMDRIVERID) MSACM_RegisterDriver(NULL, NULL, hinstModule);
    57    
     57
    5858    /* FIXME: lParam, dwPriority and fdwAdd ignored */
    59    
     59
    6060    return MMSYSERR_NOERROR;
    6161}
     
    6767 */
    6868MMRESULT WINAPI acmDriverAddW(PHACMDRIVERID phadid, HINSTANCE hinstModule,
    69                               LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
     69                  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
    7070{
    7171    FIXME("(%p, 0x%08x, %ld, %ld, %ld): stub\n",
    72           phadid, hinstModule, lParam, dwPriority, fdwAdd);
    73    
     72      phadid, hinstModule, lParam, dwPriority, fdwAdd);
     73
    7474    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
    7575    return MMSYSERR_ERROR;
     
    8181MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose)
    8282{
    83     PWINE_ACMDRIVER     pad;
    84     PWINE_ACMDRIVERID   padid;
    85     PWINE_ACMDRIVER*    tpad;
     83    PWINE_ACMDRIVER pad;
     84    PWINE_ACMDRIVERID   padid;
     85    PWINE_ACMDRIVER*    tpad;
    8686
    8787    if (fdwClose)
    88         return MMSYSERR_INVALFLAG;
    89    
     88    return MMSYSERR_INVALFLAG;
     89
    9090    pad = MSACM_GetDriver(had);
    9191    if (!pad)
    92         return MMSYSERR_INVALHANDLE;
     92    return MMSYSERR_INVALHANDLE;
    9393
    9494    padid = pad->obj.pACMDriverID;
     
    9696    /* remove driver from list */
    9797    for (tpad = &(padid->pACMDriverList); *tpad; *tpad = (*tpad)->pNextACMDriver) {
    98         if (*tpad == pad) {
    99             *tpad = (*tpad)->pNextACMDriver;
    100             break;
    101         }
    102     }
    103    
     98    if (*tpad == pad) {
     99        *tpad = (*tpad)->pNextACMDriver;
     100        break;
     101    }
     102    }
     103
    104104    /* close driver if it has been opened */
    105105    if (pad->hDrvr && !padid->hInstModule)
    106         CloseDriver(pad->hDrvr, 0, 0);
    107    
     106    CloseDriver(pad->hDrvr, 0, 0);
     107
    108108    HeapFree(MSACM_hHeap, 0, pad);
    109    
     109
    110110    return MMSYSERR_NOERROR;
    111111}
     
    117117{
    118118    MMRESULT mmr;
    119     ACMDRIVERDETAILSW   addw;
    120    
     119    ACMDRIVERDETAILSW   addw;
     120
    121121    addw.cbStruct = sizeof(addw);
    122122    mmr = acmDriverDetailsW(hadid, &addw, fdwDetails);
    123123    if (mmr == 0) {
    124         padd->fccType = addw.fccType;
    125         padd->fccComp = addw.fccComp;
    126         padd->wMid = addw.wMid;
    127         padd->wPid = addw.wPid;
    128         padd->vdwACM = addw.vdwACM;
    129         padd->vdwDriver = addw.vdwDriver;
    130         padd->fdwSupport = addw.fdwSupport;
    131         padd->cFormatTags = addw.cFormatTags;
    132         padd->cFilterTags = addw.cFilterTags;
    133         padd->hicon = addw.hicon;
     124    padd->fccType = addw.fccType;
     125    padd->fccComp = addw.fccComp;
     126    padd->wMid = addw.wMid;
     127    padd->wPid = addw.wPid;
     128    padd->vdwACM = addw.vdwACM;
     129    padd->vdwDriver = addw.vdwDriver;
     130    padd->fdwSupport = addw.fdwSupport;
     131    padd->cFormatTags = addw.cFormatTags;
     132    padd->cFilterTags = addw.cFilterTags;
     133    padd->hicon = addw.hicon;
    134134        WideCharToMultiByte( CP_ACP, 0, addw.szShortName, -1, padd->szShortName,
    135135                             sizeof(padd->szShortName), NULL, NULL );
     
    153153    HACMDRIVER acmDrvr;
    154154    MMRESULT mmr;
    155    
     155
    156156    if (fdwDetails)
    157         return MMSYSERR_INVALFLAG;
    158    
     157    return MMSYSERR_INVALFLAG;
     158
    159159    mmr = acmDriverOpen(&acmDrvr, hadid, 0);
    160160    if (mmr == MMSYSERR_NOERROR) {
    161         mmr = (MMRESULT)MSACM_Message(acmDrvr, ACMDM_DRIVER_DETAILS, (LPARAM)padd,  0);
    162    
    163         acmDriverClose(acmDrvr, 0);
    164     }
    165    
     161    mmr = (MMRESULT)MSACM_Message(acmDrvr, ACMDM_DRIVER_DETAILS, (LPARAM)padd,  0);
     162
     163    acmDriverClose(acmDrvr, 0);
     164    }
     165
    166166    return mmr;
    167167}
     
    172172MMRESULT WINAPI acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWORD fdwEnum)
    173173{
    174     PWINE_ACMDRIVERID   p;
    175     ACMDRIVERDETAILSW   add;
     174    PWINE_ACMDRIVERID   p;
     175    ACMDRIVERDETAILSW   add;
    176176
    177177    if (!fnCallback) return MMSYSERR_INVALPARAM;
    178    
     178
    179179    if (fdwEnum && ~(ACM_DRIVERENUMF_NOLOCAL|ACM_DRIVERENUMF_DISABLED))
    180         return MMSYSERR_INVALFLAG;
    181    
     180    return MMSYSERR_INVALFLAG;
     181
    182182    add.cbStruct = sizeof(add);
    183183    for (p = MSACM_pFirstACMDriverID; p; p = p->pNextACMDriverID) {
    184         if (acmDriverDetailsW((HACMDRIVERID)p, &add, 0) != MMSYSERR_NOERROR)
    185             continue;
    186         if (!p->bEnabled) {
    187             if (fdwEnum & ACM_DRIVERENUMF_DISABLED)
    188                 add.fdwSupport |= ACMDRIVERDETAILS_SUPPORTF_DISABLED;
    189             else
    190                 continue;
    191         }
    192         if (!(*fnCallback)((HACMDRIVERID)p, dwInstance, add.fdwSupport))
    193             break;
    194     }
    195    
     184    if (acmDriverDetailsW((HACMDRIVERID)p, &add, 0) != MMSYSERR_NOERROR)
     185        continue;
     186    if (!p->bEnabled) {
     187        if (fdwEnum & ACM_DRIVERENUMF_DISABLED)
     188        add.fdwSupport |= ACMDRIVERDETAILS_SUPPORTF_DISABLED;
     189        else
     190        continue;
     191    }
     192    if (!(*fnCallback)((HACMDRIVERID)p, dwInstance, add.fdwSupport))
     193        break;
     194    }
     195
    196196    return MMSYSERR_NOERROR;
    197197}
     
    203203{
    204204    PWINE_ACMOBJ pao;
    205    
     205
    206206    if (!phadid)
    207         return MMSYSERR_INVALPARAM;
    208    
     207    return MMSYSERR_INVALPARAM;
     208
    209209    if (fdwDriverID)
    210         return MMSYSERR_INVALFLAG;
    211    
     210    return MMSYSERR_INVALFLAG;
     211
    212212    pao = MSACM_GetObj(hao, WINE_ACMOBJ_DONTCARE);
    213213    if (!pao)
    214         return MMSYSERR_INVALHANDLE;
    215    
     214    return MMSYSERR_INVALHANDLE;
     215
    216216    *phadid = (HACMDRIVERID) pao->pACMDriverID;
    217    
     217
    218218    return MMSYSERR_NOERROR;
    219219}
     
    226226{
    227227    if ((uMsg >= ACMDM_USER && uMsg < ACMDM_RESERVED_LOW) ||
    228         uMsg == ACMDM_DRIVER_ABOUT ||
    229         uMsg == DRV_QUERYCONFIGURE ||
    230         uMsg == DRV_CONFIGURE)
    231         return MSACM_Message(had, uMsg, lParam1, lParam2);
     228    uMsg == ACMDM_DRIVER_ABOUT ||
     229    uMsg == DRV_QUERYCONFIGURE ||
     230    uMsg == DRV_CONFIGURE)
     231    return MSACM_Message(had, uMsg, lParam1, lParam2);
    232232    return MMSYSERR_INVALPARAM;
    233233}
     
    239239MMRESULT WINAPI acmDriverOpen(PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen)
    240240{
    241     PWINE_ACMDRIVERID   padid;
    242     PWINE_ACMDRIVER     pad;
     241    PWINE_ACMDRIVERID   padid;
     242    PWINE_ACMDRIVER pad;
    243243
    244244    TRACE("(%p, %x, %08lu)\n", phad, hadid, fdwOpen);
    245245
    246246    if (!phad)
    247         return MMSYSERR_INVALPARAM;
    248    
     247    return MMSYSERR_INVALPARAM;
     248
    249249    if (fdwOpen)
    250         return MMSYSERR_INVALFLAG;
    251    
    252     padid = MSACM_GetDriverID(hadid); 
     250    return MMSYSERR_INVALFLAG;
     251
     252    padid = MSACM_GetDriverID(hadid);
    253253    if (!padid)
    254         return MMSYSERR_INVALHANDLE;
    255    
     254    return MMSYSERR_INVALHANDLE;
     255
    256256    pad = HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVER));
    257257    if (!pad) return MMSYSERR_NOMEM;
     
    259259    pad->obj.dwType = WINE_ACMOBJ_DRIVER;
    260260    pad->obj.pACMDriverID = padid;
    261    
     261
    262262    if (!(pad->hDrvr = padid->hInstModule) && padid->pszDriverAlias)
    263         pad->hDrvr = OpenDriverA(padid->pszDriverAlias, NULL, 0);
     263    pad->hDrvr = OpenDriverA(padid->pszDriverAlias, NULL, 0);
    264264    if (!pad->hDrvr) {
    265         HeapFree(MSACM_hHeap, 0, pad);
    266         return MMSYSERR_ERROR;
     265    HeapFree(MSACM_hHeap, 0, pad);
     266    return MMSYSERR_ERROR;
    267267    }
    268268
     
    289289    HKEY hPriorityKey;
    290290    DWORD dwPriorityCounter;
    291    
     291
    292292    padid = MSACM_GetDriverID(hadid);
    293293    if (!padid)
    294         return MMSYSERR_INVALHANDLE;
    295    
     294    return MMSYSERR_INVALHANDLE;
     295
    296296    /* Check for unknown flags */
    297     if (fdwPriority & 
    298         ~(ACM_DRIVERPRIORITYF_ENABLE|ACM_DRIVERPRIORITYF_DISABLE|
    299           ACM_DRIVERPRIORITYF_BEGIN|ACM_DRIVERPRIORITYF_END))
    300         return MMSYSERR_INVALFLAG;
    301    
     297    if (fdwPriority &
     298    ~(ACM_DRIVERPRIORITYF_ENABLE|ACM_DRIVERPRIORITYF_DISABLE|
     299      ACM_DRIVERPRIORITYF_BEGIN|ACM_DRIVERPRIORITYF_END))
     300    return MMSYSERR_INVALFLAG;
     301
    302302    /* Check for incompatible flags */
    303303    if ((fdwPriority & ACM_DRIVERPRIORITYF_ENABLE) &&
    304         (fdwPriority & ACM_DRIVERPRIORITYF_DISABLE))
    305         return MMSYSERR_INVALFLAG;
    306    
     304    (fdwPriority & ACM_DRIVERPRIORITYF_DISABLE))
     305    return MMSYSERR_INVALFLAG;
     306
    307307    /* Check for incompatible flags */
    308308    if ((fdwPriority & ACM_DRIVERPRIORITYF_BEGIN) &&
    309         (fdwPriority & ACM_DRIVERPRIORITYF_END))
    310         return MMSYSERR_INVALFLAG;
    311    
    312     lError = RegOpenKeyA(HKEY_CURRENT_USER, 
    313                         "Software\\Microsoft\\Multimedia\\"
    314                         "Audio Compression Manager\\Priority v4.00",
    315                         &hPriorityKey
    316                         );
     309    (fdwPriority & ACM_DRIVERPRIORITYF_END))
     310    return MMSYSERR_INVALFLAG;
     311
     312    lError = RegOpenKeyA(HKEY_CURRENT_USER,
     313            "Software\\Microsoft\\Multimedia\\"
     314            "Audio Compression Manager\\Priority v4.00",
     315            &hPriorityKey
     316            );
    317317    /* FIXME: Create key */
    318318    if (lError != ERROR_SUCCESS)
    319         return MMSYSERR_ERROR;
    320    
    321     for (dwPriorityCounter = 1; ; dwPriorityCounter++)  {
    322         snprintf(szSubKey, 17, "Priorty%ld", dwPriorityCounter);
    323         lError = RegQueryValueA(hPriorityKey, szSubKey, szBuffer, &lBufferLength);
    324         if (lError != ERROR_SUCCESS)
    325             break;
    326        
    327         FIXME("(0x%08x, %ld, %ld): stub (partial)\n",
    328               hadid, dwPriority, fdwPriority);
    329         break;
    330     }
    331    
     319    return MMSYSERR_ERROR;
     320
     321    for (dwPriorityCounter = 1; ; dwPriorityCounter++)  {
     322    snprintf(szSubKey, 17, "Priorty%ld", dwPriorityCounter);
     323    lError = RegQueryValueA(hPriorityKey, szSubKey, szBuffer, &lBufferLength);
     324    if (lError != ERROR_SUCCESS)
     325        break;
     326
     327    FIXME("(0x%08x, %ld, %ld): stub (partial)\n",
     328          hadid, dwPriority, fdwPriority);
     329    break;
     330    }
     331
    332332    RegCloseKey(hPriorityKey);
    333    
     333
    334334    return MMSYSERR_ERROR;
    335335}
     
    341341{
    342342    PWINE_ACMDRIVERID padid;
    343    
     343
    344344    padid = MSACM_GetDriverID(hadid);
    345345    if (!padid)
    346         return MMSYSERR_INVALHANDLE;
    347    
     346    return MMSYSERR_INVALHANDLE;
     347
    348348    if (fdwRemove)
    349         return MMSYSERR_INVALFLAG;
    350    
     349    return MMSYSERR_INVALFLAG;
     350
    351351    MSACM_UnregisterDriver(padid);
    352    
    353     return MMSYSERR_NOERROR;
    354 }
    355 
     352
     353    return MMSYSERR_NOERROR;
     354}
     355
Note: See TracChangeset for help on using the changeset viewer.