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