Converted to the new debug interface, using script written by Patrik
[wine/multimedia.git] / dlls / msacm32 / internal.c
blobca9f70261083e7818af427e7bea3af434d410150
1 /*
2 * MSACM32 library
4 * Copyright 1998 Patrik Stridvall
5 */
7 #include "winbase.h"
8 #include "winuser.h"
9 #include "winerror.h"
10 #include "driver.h"
11 #include "heap.h"
12 #include "mmsystem.h"
13 #include "msacm.h"
14 #include "msacmdrv.h"
15 #include "debugtools.h"
17 /**********************************************************************/
19 HANDLE MSACM_hHeap = (HANDLE) NULL;
20 PWINE_ACMDRIVERID MSACM_pFirstACMDriverID = NULL;
21 PWINE_ACMDRIVERID MSACM_pLastACMDriverID = NULL;
23 /***********************************************************************
24 * MSACM_RegisterDriver32()
26 PWINE_ACMDRIVERID MSACM_RegisterDriver(
27 LPSTR pszDriverAlias, LPSTR pszFileName,
28 PWINE_ACMLOCALDRIVER pLocalDriver)
30 PWINE_ACMDRIVERID padid;
31 padid = (PWINE_ACMDRIVERID) HeapAlloc(
32 MSACM_hHeap, 0, sizeof(WINE_ACMDRIVERID)
34 padid->pszDriverAlias =
35 HEAP_strdupA(MSACM_hHeap, 0, pszDriverAlias);
36 padid->pszFileName =
37 HEAP_strdupA(MSACM_hHeap, 0, pszFileName);
38 padid->pACMLocalDriver = pLocalDriver;
39 padid->bEnabled = TRUE;
40 padid->pACMDriver = NULL;
41 padid->pNextACMDriverID = NULL;
42 padid->pPreviousACMDriverID =
43 MSACM_pLastACMDriverID;
44 MSACM_pLastACMDriverID = padid;
45 if(!MSACM_pFirstACMDriverID)
46 MSACM_pFirstACMDriverID = padid;
48 return padid;
51 /***********************************************************************
52 * MSACM_RegisterAllDrivers32()
54 void MSACM_RegisterAllDrivers()
56 PWINE_ACMBUILTINDRIVER pbd;
57 LPSTR pszBuffer;
58 DWORD dwBufferLength;
60 /* FIXME
61 * What if the user edits system.ini while the program is running?
62 * Does Windows handle that?
64 if(!MSACM_pFirstACMDriverID)
65 return;
67 /* FIXME: Do not work! How do I determine the section length? */
68 dwBufferLength =
69 GetPrivateProfileSectionA("drivers32", NULL, 0, "system.ini");
71 pszBuffer = (LPSTR) HeapAlloc(
72 MSACM_hHeap, 0, dwBufferLength
74 if(GetPrivateProfileSectionA(
75 "drivers32", pszBuffer, dwBufferLength, "system.ini"))
77 char *s = pszBuffer;
78 while(*s)
80 if(!lstrncmpiA("MSACM.", s, 6))
82 char *s2 = s;
83 while(*s2 != '\0' && *s2 != '=') s2++;
84 if(*s2)
86 *s2++='\0';
87 MSACM_RegisterDriver(s, s2, NULL);
90 s += lstrlenA(s) + 1; /* Either next char or \0 */
94 /* FIXME
95 * Check if any of the builtin driver was added
96 * when the external drivers was.
99 pbd = MSACM_BuiltinDrivers;
100 while(pbd->pszDriverAlias)
102 PWINE_ACMLOCALDRIVER pld;
103 pld = HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMLOCALDRIVER));
104 pld->pfnDriverProc = pbd->pfnDriverProc;
105 MSACM_RegisterDriver(pbd->pszDriverAlias, NULL, pld);
106 pbd++;
108 HeapFree(MSACM_hHeap, 0, pszBuffer);
111 /***********************************************************************
112 * MSACM_UnregisterDriver32()
114 PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p)
116 PWINE_ACMDRIVERID pNextACMDriverID;
118 if(p->pACMDriver)
119 acmDriverClose((HACMDRIVER) p->pACMDriver, 0);
121 if(p->pszDriverAlias)
122 HeapFree(MSACM_hHeap, 0, p->pszDriverAlias);
123 if(p->pszFileName)
124 HeapFree(MSACM_hHeap, 0, p->pszFileName);
125 if(p->pACMLocalDriver)
126 HeapFree(MSACM_hHeap, 0, p->pACMLocalDriver);
128 if(p->pPreviousACMDriverID)
129 p->pPreviousACMDriverID->pNextACMDriverID = p->pNextACMDriverID;
130 if(p->pNextACMDriverID)
131 p->pNextACMDriverID->pPreviousACMDriverID = p->pPreviousACMDriverID;
133 pNextACMDriverID = p->pNextACMDriverID;
135 HeapFree(MSACM_hHeap, 0, p);
137 return pNextACMDriverID;
140 /***********************************************************************
141 * MSACM_UnregisterAllDrivers32()
142 * FIXME
143 * Where should this function be called?
145 void MSACM_UnregisterAllDrivers()
147 PWINE_ACMDRIVERID p = MSACM_pFirstACMDriverID;
148 while(p) p = MSACM_UnregisterDriver(p);
151 /***********************************************************************
152 * MSACM_GetDriverID32()
154 PWINE_ACMDRIVERID MSACM_GetDriverID(HACMDRIVERID hDriverID)
156 return (PWINE_ACMDRIVERID) hDriverID;
159 /***********************************************************************
160 * MSACM_GetDriver32()
162 PWINE_ACMDRIVER MSACM_GetDriver(HACMDRIVER hDriver)
164 return (PWINE_ACMDRIVER) hDriver;
167 /***********************************************************************
168 * MSACM_GetObj32()
170 PWINE_ACMOBJ MSACM_GetObj(HACMOBJ hObj)
172 return (PWINE_ACMOBJ) hObj;
175 /***********************************************************************
176 * MSACM_OpenDriverProc32
177 * FIXME
178 * This function should be integrated with OpenDriver,
179 * renamed and moved there.
181 HDRVR MSACM_OpenDriverProc(DRIVERPROC pfnDriverProc)
183 #if 0
184 LPDRIVERITEMA pDrvr;
186 /* FIXME: This is a very bad solution */
187 pDrvr = (LPDRIVERITEMA) HeapAlloc(MSACM_hHeap, HEAP_ZERO_MEMORY, sizeof(DRIVERITEMA));
188 pDrvr->count = 1;
189 pDrvr->driverproc = pfnDriverProc;
191 /* FIXME: Send DRV_OPEN among others to DriverProc */
193 return (HDRVR) pDrvr;
194 #else
195 return (HDRVR) 0;
196 #endif