msi: Move database initialization to a separate function.
[wine] / dlls / msacm32 / wineacm.h
1 /* -*- tab-width: 8; c-basic-offset: 4 -*- */
2 /*
3  * Copyright 2000 Eric Pouech
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18  */
19
20 #ifndef __WINE_WINEACM_H
21 #define __WINE_WINEACM_H
22
23 #include <windef.h>
24 #include <winuser.h>
25
26 /***********************************************************************
27  * Wine specific - Win32
28  */
29 typedef struct _WINE_ACMDRIVERID *PWINE_ACMDRIVERID;
30 typedef struct _WINE_ACMDRIVER   *PWINE_ACMDRIVER;
31
32 #define WINE_ACMOBJ_DONTCARE    0x5EED0000
33 #define WINE_ACMOBJ_DRIVERID    0x5EED0001
34 #define WINE_ACMOBJ_DRIVER      0x5EED0002
35 #define WINE_ACMOBJ_STREAM      0x5EED0003
36 #define WINE_ACMOBJ_NOTIFYWND   0x5EED0004
37 #define WINE_ACMOBJ_LOCALDRIVER 0x5EED0005
38
39 typedef struct _WINE_ACMOBJ
40 {
41     DWORD               dwType;
42     PWINE_ACMDRIVERID   pACMDriverID;
43 } WINE_ACMOBJ, *PWINE_ACMOBJ;
44
45 typedef struct _WINE_ACMLOCALDRIVER * PWINE_ACMLOCALDRIVER;
46 typedef struct _WINE_ACMLOCALDRIVERINST * PWINE_ACMLOCALDRIVERINST;
47 typedef struct _WINE_ACMLOCALDRIVER
48 {
49     WINE_ACMOBJ         obj;
50     HMODULE             hModule;
51     DRIVERPROC          lpDrvProc;
52     PWINE_ACMLOCALDRIVERINST pACMInstList;
53     PWINE_ACMLOCALDRIVER pNextACMLocalDrv;
54     PWINE_ACMLOCALDRIVER pPrevACMLocalDrv;
55 } WINE_ACMLOCALDRIVER;
56
57 typedef struct _WINE_ACMLOCALDRIVERINST
58 {
59     PWINE_ACMLOCALDRIVER pLocalDriver;
60     DWORD dwDriverID;
61     BOOL bSession;
62     PWINE_ACMLOCALDRIVERINST pNextACMInst;
63 } WINE_ACMLOCALDRIVERINST;
64
65 typedef struct _WINE_ACMDRIVER
66 {
67     WINE_ACMOBJ         obj;
68     HDRVR               hDrvr;
69     PWINE_ACMLOCALDRIVERINST pLocalDrvrInst;
70
71     PWINE_ACMDRIVER     pNextACMDriver;
72 } WINE_ACMDRIVER;
73
74 typedef struct _WINE_ACMSTREAM
75 {
76     WINE_ACMOBJ         obj;
77     PWINE_ACMDRIVER     pDrv;
78     ACMDRVSTREAMINSTANCE drvInst;
79     HACMDRIVER          hAcmDriver;
80 } WINE_ACMSTREAM, *PWINE_ACMSTREAM;
81
82 typedef struct _WINE_ACMDRIVERID
83 {
84     WINE_ACMOBJ         obj;
85     LPWSTR              pszDriverAlias;
86     LPWSTR              pszFileName;
87     PWINE_ACMLOCALDRIVER pLocalDriver;          /* NULL if global */
88     PWINE_ACMDRIVER     pACMDriverList;
89     PWINE_ACMDRIVERID   pNextACMDriverID;
90     PWINE_ACMDRIVERID   pPrevACMDriverID;
91     /* information about the driver itself, either gotten from registry or driver itself */
92     DWORD               cFilterTags;
93     DWORD               cFormatTags;
94     DWORD               fdwSupport;
95     struct {
96         DWORD                   dwFormatTag;
97         DWORD                   cbwfx;
98     }*                  aFormatTag;
99 } WINE_ACMDRIVERID;
100
101 typedef struct _WINE_ACMNOTIFYWND * PWINE_ACMNOTIFYWND;
102 typedef struct _WINE_ACMNOTIFYWND
103 {
104     WINE_ACMOBJ         obj;
105     HWND                hNotifyWnd;          /* Window to notify on ACM events: driver add, driver removal, priority change */
106     DWORD               dwNotifyMsg;         /* Notification message to send to window */
107     DWORD               fdwSupport;
108     PWINE_ACMNOTIFYWND  pNextACMNotifyWnd;
109     PWINE_ACMNOTIFYWND  pPrevACMNotifyWnd;
110 } WINE_ACMNOTIFYWND;
111
112 /* From internal.c */
113 extern HANDLE MSACM_hHeap;
114 extern PWINE_ACMDRIVERID MSACM_pFirstACMDriverID;
115 extern PWINE_ACMDRIVERID MSACM_RegisterDriver(LPCWSTR pszDriverAlias, LPCWSTR pszFileName,
116                                               PWINE_ACMLOCALDRIVER pLocalDriver);
117 extern void MSACM_RegisterAllDrivers(void);
118 extern PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p);
119 extern void MSACM_UnregisterAllDrivers(void);
120 extern PWINE_ACMDRIVERID MSACM_GetDriverID(HACMDRIVERID hDriverID);
121 extern PWINE_ACMDRIVER MSACM_GetDriver(HACMDRIVER hDriver);
122 extern PWINE_ACMNOTIFYWND MSACM_GetNotifyWnd(HACMDRIVERID hDriver);
123 extern PWINE_ACMOBJ MSACM_GetObj(HACMOBJ hObj, DWORD type);
124
125 extern MMRESULT MSACM_Message(HACMDRIVER, UINT, LPARAM, LPARAM);
126 extern BOOL MSACM_FindFormatTagInCache(const WINE_ACMDRIVERID*, DWORD, LPDWORD);
127
128 extern void MSACM_RePositionDriver(PWINE_ACMDRIVERID, DWORD);
129 extern void MSACM_WriteCurrentPriorities(void);
130 extern void MSACM_BroadcastNotification(void);
131 extern void MSACM_DisableNotifications(void);
132 extern void MSACM_EnableNotifications(void);
133 extern PWINE_ACMNOTIFYWND MSACM_RegisterNotificationWindow(HWND hNotifyWnd, DWORD dwNotifyMsg);
134 extern PWINE_ACMNOTIFYWND MSACM_UnRegisterNotificationWindow(const WINE_ACMNOTIFYWND*);
135
136 extern PWINE_ACMDRIVERID MSACM_RegisterDriverFromRegistry(LPCWSTR pszRegEntry);
137
138 extern PWINE_ACMLOCALDRIVER MSACM_RegisterLocalDriver(HMODULE hModule, DRIVERPROC lpDriverProc);
139 extern PWINE_ACMLOCALDRIVERINST MSACM_OpenLocalDriver(PWINE_ACMLOCALDRIVER, LPARAM);
140 extern LRESULT MSACM_CloseLocalDriver(PWINE_ACMLOCALDRIVERINST);
141 /*
142 extern PWINE_ACMLOCALDRIVER MSACM_GetLocalDriver(HACMDRIVER hDriver);
143 */
144 /* From msacm32.c */
145 extern HINSTANCE MSACM_hInstance32;
146
147 /* From pcmcnvtr.c */
148 LRESULT CALLBACK        PCM_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg,
149                                        LPARAM dwParam1, LPARAM dwParam2);
150
151 /* Dialog box templates */
152 #include "msacmdlg.h"
153
154 #endif /* __WINE_WINEACM_H */