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