Ignore:
Timestamp:
Sep 15, 2001, 11:47:44 AM (24 years ago)
Author:
sandervl
Message:

restored old version

File:
1 edited

Legend:

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

    r6648 r6712  
    11/* -*- tab-width: 8; c-basic-offset: 4 -*- */
    2 /* $Id: driver.c,v 1.2 2001-09-05 13:11:25 bird Exp $ */
     2
    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   
     332    RegCloseKey(hPriorityKey);
     333   
    319334    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 
    332     RegCloseKey(hPriorityKey);
    333 
    334     return MMSYSERR_ERROR;
    335335}
    336336
     
    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.