xref: /reactos/dll/win32/msacm32/wineacm.h (revision 323975a7)
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 #ifdef __REACTOS__
26 #include <wine/msacmdrv.h>
27 #endif
28 
29 /***********************************************************************
30  * Wine specific - Win32
31  */
32 typedef struct _WINE_ACMDRIVERID *PWINE_ACMDRIVERID;
33 typedef struct _WINE_ACMDRIVER   *PWINE_ACMDRIVER;
34 
35 #define WINE_ACMOBJ_DONTCARE	0x5EED0000
36 #define WINE_ACMOBJ_DRIVERID	0x5EED0001
37 #define WINE_ACMOBJ_DRIVER	0x5EED0002
38 #define WINE_ACMOBJ_STREAM	0x5EED0003
39 #define WINE_ACMOBJ_NOTIFYWND   0x5EED0004
40 #define WINE_ACMOBJ_LOCALDRIVER 0x5EED0005
41 
42 typedef struct _WINE_ACMOBJ
43 {
44     DWORD		dwType;
45     PWINE_ACMDRIVERID	pACMDriverID;
46 } WINE_ACMOBJ, *PWINE_ACMOBJ;
47 
48 typedef struct _WINE_ACMLOCALDRIVER * PWINE_ACMLOCALDRIVER;
49 typedef struct _WINE_ACMLOCALDRIVERINST * PWINE_ACMLOCALDRIVERINST;
50 typedef struct _WINE_ACMLOCALDRIVER
51 {
52     WINE_ACMOBJ         obj;
53     HMODULE             hModule;
54     DRIVERPROC          lpDrvProc;
55     PWINE_ACMLOCALDRIVERINST pACMInstList;
56     PWINE_ACMLOCALDRIVER pNextACMLocalDrv;
57     PWINE_ACMLOCALDRIVER pPrevACMLocalDrv;
58     LONG                ref;
59 } WINE_ACMLOCALDRIVER;
60 
61 typedef struct _WINE_ACMLOCALDRIVERINST
62 {
63     PWINE_ACMLOCALDRIVER pLocalDriver;
64     DWORD dwDriverID;
65     BOOL bSession;
66     PWINE_ACMLOCALDRIVERINST pNextACMInst;
67 } WINE_ACMLOCALDRIVERINST;
68 
69 typedef struct _WINE_ACMDRIVER
70 {
71     WINE_ACMOBJ		obj;
72     HDRVR      		hDrvr;
73     PWINE_ACMLOCALDRIVERINST pLocalDrvrInst;
74 
75     PWINE_ACMDRIVER	pNextACMDriver;
76 } WINE_ACMDRIVER;
77 
78 typedef struct _WINE_ACMSTREAM
79 {
80     WINE_ACMOBJ		obj;
81     PWINE_ACMDRIVER	pDrv;
82     ACMDRVSTREAMINSTANCE drvInst;
83     HACMDRIVER		hAcmDriver;
84 } WINE_ACMSTREAM, *PWINE_ACMSTREAM;
85 
86 typedef struct _WINE_ACMDRIVERID
87 {
88     WINE_ACMOBJ		obj;
89     LPWSTR		pszDriverAlias;
90     LPWSTR              pszFileName;
91     PWINE_ACMLOCALDRIVER pLocalDriver;          /* NULL if global */
92     PWINE_ACMDRIVER     pACMDriverList;
93     PWINE_ACMDRIVERID   pNextACMDriverID;
94     PWINE_ACMDRIVERID	pPrevACMDriverID;
95     /* information about the driver itself, either gotten from registry or driver itself */
96     DWORD		cFilterTags;
97     DWORD		cFormatTags;
98     DWORD		fdwSupport;
99     struct {
100 	DWORD			dwFormatTag;
101 	DWORD			cbwfx;
102     }* 			aFormatTag;
103 } WINE_ACMDRIVERID;
104 
105 typedef struct _WINE_ACMNOTIFYWND * PWINE_ACMNOTIFYWND;
106 typedef struct _WINE_ACMNOTIFYWND
107 {
108     WINE_ACMOBJ		obj;
109     HWND                hNotifyWnd;          /* Window to notify on ACM events: driver add, driver removal, priority change */
110     DWORD               dwNotifyMsg;         /* Notification message to send to window */
111     DWORD		fdwSupport;
112     PWINE_ACMNOTIFYWND  pNextACMNotifyWnd;
113     PWINE_ACMNOTIFYWND  pPrevACMNotifyWnd;
114 } WINE_ACMNOTIFYWND;
115 
116 /* From internal.c */
117 extern HANDLE MSACM_hHeap DECLSPEC_HIDDEN;
118 extern PWINE_ACMDRIVERID MSACM_pFirstACMDriverID DECLSPEC_HIDDEN;
119 extern PWINE_ACMDRIVERID MSACM_RegisterDriver(LPCWSTR pszDriverAlias, LPCWSTR pszFileName,
120 					      PWINE_ACMLOCALDRIVER pLocalDriver) DECLSPEC_HIDDEN;
121 extern void MSACM_RegisterAllDrivers(void) DECLSPEC_HIDDEN;
122 extern PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p) DECLSPEC_HIDDEN;
123 extern void MSACM_UnregisterAllDrivers(void) DECLSPEC_HIDDEN;
124 extern PWINE_ACMDRIVERID MSACM_GetDriverID(HACMDRIVERID hDriverID) DECLSPEC_HIDDEN;
125 extern PWINE_ACMDRIVER MSACM_GetDriver(HACMDRIVER hDriver) DECLSPEC_HIDDEN;
126 extern PWINE_ACMNOTIFYWND MSACM_GetNotifyWnd(HACMDRIVERID hDriver) DECLSPEC_HIDDEN;
127 extern PWINE_ACMOBJ MSACM_GetObj(HACMOBJ hObj, DWORD type) DECLSPEC_HIDDEN;
128 
129 extern MMRESULT MSACM_Message(HACMDRIVER, UINT, LPARAM, LPARAM) DECLSPEC_HIDDEN;
130 extern BOOL MSACM_FindFormatTagInCache(const WINE_ACMDRIVERID*, DWORD, LPDWORD) DECLSPEC_HIDDEN;
131 
132 extern void MSACM_RePositionDriver(PWINE_ACMDRIVERID, DWORD) DECLSPEC_HIDDEN;
133 extern void MSACM_WriteCurrentPriorities(void) DECLSPEC_HIDDEN;
134 extern void MSACM_BroadcastNotification(void) DECLSPEC_HIDDEN;
135 extern void MSACM_DisableNotifications(void) DECLSPEC_HIDDEN;
136 extern void MSACM_EnableNotifications(void) DECLSPEC_HIDDEN;
137 extern PWINE_ACMNOTIFYWND MSACM_RegisterNotificationWindow(HWND hNotifyWnd, DWORD dwNotifyMsg) DECLSPEC_HIDDEN;
138 extern PWINE_ACMNOTIFYWND MSACM_UnRegisterNotificationWindow(const WINE_ACMNOTIFYWND*) DECLSPEC_HIDDEN;
139 
140 extern PWINE_ACMDRIVERID MSACM_RegisterDriverFromRegistry(LPCWSTR pszRegEntry) DECLSPEC_HIDDEN;
141 
142 extern PWINE_ACMLOCALDRIVER MSACM_RegisterLocalDriver(HMODULE hModule, DRIVERPROC lpDriverProc) DECLSPEC_HIDDEN;
143 extern PWINE_ACMLOCALDRIVERINST MSACM_OpenLocalDriver(PWINE_ACMLOCALDRIVER, LPARAM) DECLSPEC_HIDDEN;
144 extern LRESULT MSACM_CloseLocalDriver(PWINE_ACMLOCALDRIVERINST) DECLSPEC_HIDDEN;
145 /*
146 extern PWINE_ACMLOCALDRIVER MSACM_GetLocalDriver(HACMDRIVER hDriver);
147 */
148 /* From msacm32.c */
149 extern HINSTANCE MSACM_hInstance32 DECLSPEC_HIDDEN;
150 
151 /* From pcmcnvtr.c */
152 LRESULT CALLBACK	PCM_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg,
153 				       LPARAM dwParam1, LPARAM dwParam2) DECLSPEC_HIDDEN;
154 
155 /* Dialog box templates */
156 #include "msacmdlg.h"
157 
158 #endif /* __WINE_WINEACM_H */
159