ReactOS 0.4.15-dev-8131-g4988de4
wineacm.h File Reference
#include <windef.h>
#include <winuser.h>
#include "msacmdlg.h"
Include dependency graph for wineacm.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _WINE_ACMOBJ
 
struct  _WINE_ACMLOCALDRIVER
 
struct  _WINE_ACMLOCALDRIVERINST
 
struct  _WINE_ACMDRIVER
 
struct  _WINE_ACMSTREAM
 
struct  _WINE_ACMDRIVERID
 
struct  _WINE_ACMNOTIFYWND
 

Macros

#define WINE_ACMOBJ_DONTCARE   0x5EED0000
 
#define WINE_ACMOBJ_DRIVERID   0x5EED0001
 
#define WINE_ACMOBJ_DRIVER   0x5EED0002
 
#define WINE_ACMOBJ_STREAM   0x5EED0003
 
#define WINE_ACMOBJ_NOTIFYWND   0x5EED0004
 
#define WINE_ACMOBJ_LOCALDRIVER   0x5EED0005
 

Typedefs

typedef struct _WINE_ACMDRIVERIDPWINE_ACMDRIVERID
 
typedef struct _WINE_ACMDRIVERPWINE_ACMDRIVER
 
typedef struct _WINE_ACMOBJ WINE_ACMOBJ
 
typedef struct _WINE_ACMOBJPWINE_ACMOBJ
 
typedef struct _WINE_ACMLOCALDRIVERPWINE_ACMLOCALDRIVER
 
typedef struct _WINE_ACMLOCALDRIVERINSTPWINE_ACMLOCALDRIVERINST
 
typedef struct _WINE_ACMLOCALDRIVER WINE_ACMLOCALDRIVER
 
typedef struct _WINE_ACMLOCALDRIVERINST WINE_ACMLOCALDRIVERINST
 
typedef struct _WINE_ACMDRIVER WINE_ACMDRIVER
 
typedef struct _WINE_ACMSTREAM WINE_ACMSTREAM
 
typedef struct _WINE_ACMSTREAMPWINE_ACMSTREAM
 
typedef struct _WINE_ACMDRIVERID WINE_ACMDRIVERID
 
typedef struct _WINE_ACMNOTIFYWNDPWINE_ACMNOTIFYWND
 
typedef struct _WINE_ACMNOTIFYWND WINE_ACMNOTIFYWND
 

Functions

PWINE_ACMDRIVERID MSACM_RegisterDriver (LPCWSTR pszDriverAlias, LPCWSTR pszFileName, PWINE_ACMLOCALDRIVER pLocalDriver) DECLSPEC_HIDDEN
 
void MSACM_RegisterAllDrivers (void) DECLSPEC_HIDDEN
 
PWINE_ACMDRIVERID MSACM_UnregisterDriver (PWINE_ACMDRIVERID p) DECLSPEC_HIDDEN
 
void MSACM_UnregisterAllDrivers (void) DECLSPEC_HIDDEN
 
PWINE_ACMDRIVERID MSACM_GetDriverID (HACMDRIVERID hDriverID) DECLSPEC_HIDDEN
 
PWINE_ACMDRIVER MSACM_GetDriver (HACMDRIVER hDriver) DECLSPEC_HIDDEN
 
PWINE_ACMNOTIFYWND MSACM_GetNotifyWnd (HACMDRIVERID hDriver) DECLSPEC_HIDDEN
 
PWINE_ACMOBJ MSACM_GetObj (HACMOBJ hObj, DWORD type) DECLSPEC_HIDDEN
 
MMRESULT MSACM_Message (HACMDRIVER, UINT, LPARAM, LPARAM) DECLSPEC_HIDDEN
 
BOOL MSACM_FindFormatTagInCache (const WINE_ACMDRIVERID *, DWORD, LPDWORD) DECLSPEC_HIDDEN
 
void MSACM_RePositionDriver (PWINE_ACMDRIVERID, DWORD) DECLSPEC_HIDDEN
 
void MSACM_WriteCurrentPriorities (void) DECLSPEC_HIDDEN
 
void MSACM_BroadcastNotification (void) DECLSPEC_HIDDEN
 
void MSACM_DisableNotifications (void) DECLSPEC_HIDDEN
 
void MSACM_EnableNotifications (void) DECLSPEC_HIDDEN
 
PWINE_ACMNOTIFYWND MSACM_RegisterNotificationWindow (HWND hNotifyWnd, DWORD dwNotifyMsg) DECLSPEC_HIDDEN
 
PWINE_ACMNOTIFYWND MSACM_UnRegisterNotificationWindow (const WINE_ACMNOTIFYWND *) DECLSPEC_HIDDEN
 
PWINE_ACMDRIVERID MSACM_RegisterDriverFromRegistry (LPCWSTR pszRegEntry) DECLSPEC_HIDDEN
 
PWINE_ACMLOCALDRIVER MSACM_RegisterLocalDriver (HMODULE hModule, DRIVERPROC lpDriverProc) DECLSPEC_HIDDEN
 
PWINE_ACMLOCALDRIVERINST MSACM_OpenLocalDriver (PWINE_ACMLOCALDRIVER, LPARAM) DECLSPEC_HIDDEN
 
LRESULT MSACM_CloseLocalDriver (PWINE_ACMLOCALDRIVERINST) DECLSPEC_HIDDEN
 
LRESULT CALLBACK PCM_DriverProc (DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg, LPARAM dwParam1, LPARAM dwParam2) DECLSPEC_HIDDEN
 

Variables

HANDLE MSACM_hHeap DECLSPEC_HIDDEN
 

Macro Definition Documentation

◆ WINE_ACMOBJ_DONTCARE

#define WINE_ACMOBJ_DONTCARE   0x5EED0000

Definition at line 35 of file wineacm.h.

◆ WINE_ACMOBJ_DRIVER

#define WINE_ACMOBJ_DRIVER   0x5EED0002

Definition at line 37 of file wineacm.h.

◆ WINE_ACMOBJ_DRIVERID

#define WINE_ACMOBJ_DRIVERID   0x5EED0001

Definition at line 36 of file wineacm.h.

◆ WINE_ACMOBJ_LOCALDRIVER

#define WINE_ACMOBJ_LOCALDRIVER   0x5EED0005

Definition at line 40 of file wineacm.h.

◆ WINE_ACMOBJ_NOTIFYWND

#define WINE_ACMOBJ_NOTIFYWND   0x5EED0004

Definition at line 39 of file wineacm.h.

◆ WINE_ACMOBJ_STREAM

#define WINE_ACMOBJ_STREAM   0x5EED0003

Definition at line 38 of file wineacm.h.

Typedef Documentation

◆ PWINE_ACMDRIVER

Definition at line 33 of file wineacm.h.

◆ PWINE_ACMDRIVERID

Definition at line 32 of file wineacm.h.

◆ PWINE_ACMLOCALDRIVER

Definition at line 48 of file wineacm.h.

◆ PWINE_ACMLOCALDRIVERINST

◆ PWINE_ACMNOTIFYWND

Definition at line 105 of file wineacm.h.

◆ PWINE_ACMOBJ

◆ PWINE_ACMSTREAM

◆ WINE_ACMDRIVER

◆ WINE_ACMDRIVERID

◆ WINE_ACMLOCALDRIVER

◆ WINE_ACMLOCALDRIVERINST

◆ WINE_ACMNOTIFYWND

◆ WINE_ACMOBJ

◆ WINE_ACMSTREAM

Function Documentation

◆ MSACM_BroadcastNotification()

void MSACM_BroadcastNotification ( void  )

Definition at line 443 of file internal.c.

444{
446 PWINE_ACMNOTIFYWND panwnd;
447
448 for (panwnd = MSACM_pFirstACMNotifyWnd; panwnd; panwnd = panwnd->pNextACMNotifyWnd)
450 SendMessageW(panwnd->hNotifyWnd, panwnd->dwNotifyMsg, 0, 0);
451 } else {
453 }
454}
#define TRUE
Definition: types.h:120
static DWORD MSACM_suspendBroadcastCount
Definition: internal.c:51
static PWINE_ACMNOTIFYWND MSACM_pFirstACMNotifyWnd
Definition: internal.c:53
static BOOL MSACM_pendingBroadcast
Definition: internal.c:52
#define ACMDRIVERDETAILS_SUPPORTF_DISABLED
Definition: msacm.h:67
PWINE_ACMNOTIFYWND pNextACMNotifyWnd
Definition: wineacm.h:112
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by acmDriverAddW(), acmDriverPriority(), acmDriverRemove(), and MSACM_EnableNotifications().

◆ MSACM_CloseLocalDriver()

LRESULT MSACM_CloseLocalDriver ( PWINE_ACMLOCALDRIVERINST  paldrv)

Definition at line 1081 of file internal.c.

1082{
1083 if (MSACM_RemoveFromList(paldrv)) {
1085 PWINE_ACMLOCALDRIVER pDriverBase = paldrv->pLocalDriver;
1086
1087 MSACM_DRIVER_SendMessage(paldrv, DRV_CLOSE, 0, 0);
1088 paldrv->dwDriverID = 0;
1089
1090 if (paldrv->bSession)
1091 ERR("should not directly close session instance (%p)\n", paldrv);
1092
1093 /* if driver has an opened session instance, we have to close it too */
1094 if (MSACM_GetNumberOfModuleRefs(pDriverBase->hModule, pDriverBase->lpDrvProc, &lpDrv0) == 1 &&
1095 lpDrv0->bSession)
1096 {
1098 lpDrv0->dwDriverID = 0;
1099 MSACM_RemoveFromList(lpDrv0);
1100 HeapFree(MSACM_hHeap, 0, lpDrv0);
1101 }
1102
1103 HeapFree(MSACM_hHeap, 0, paldrv);
1104 return TRUE;
1105 }
1106 ERR("unable to close driver instance\n");
1107 return FALSE;
1108}
#define ERR(fmt,...)
Definition: debug.h:113
#define FALSE
Definition: types.h:117
#define HeapFree(x, y, z)
Definition: compat.h:735
static BOOL MSACM_RemoveFromList(PWINE_ACMLOCALDRIVERINST lpDrv)
Definition: internal.c:953
HANDLE MSACM_hHeap
Definition: internal.c:47
#define MSACM_DRIVER_SendMessage(PDRVRINST, msg, lParam1, lParam2)
Definition: internal.c:866
static unsigned MSACM_GetNumberOfModuleRefs(HMODULE hModule, DRIVERPROC lpDrvProc, WINE_ACMLOCALDRIVERINST **found)
Definition: internal.c:925
#define DRV_CLOSE
Definition: mmsystem.h:122
#define L(x)
Definition: ntvdm.h:50
PWINE_ACMLOCALDRIVER pLocalDriver
Definition: wineacm.h:63
DRIVERPROC lpDrvProc
Definition: wineacm.h:54

Referenced by acmDriverClose(), and MSACM_OpenLocalDriver().

◆ MSACM_DisableNotifications()

void MSACM_DisableNotifications ( void  )

Definition at line 459 of file internal.c.

460{
462}

Referenced by acmDriverPriority().

◆ MSACM_EnableNotifications()

void MSACM_EnableNotifications ( void  )

Definition at line 467 of file internal.c.

468{
474 }
475 }
476}
void MSACM_BroadcastNotification(void)
Definition: internal.c:443

Referenced by acmDriverPriority().

◆ MSACM_FindFormatTagInCache()

BOOL MSACM_FindFormatTagInCache ( const WINE_ACMDRIVERID padid,
DWORD  fmtTag,
LPDWORD  idx 
)

Definition at line 118 of file internal.c.

119{
120 unsigned i;
121
122 for (i = 0; i < padid->cFormatTags; i++) {
123 if (padid->aFormatTag[i].dwFormatTag == fmtTag) {
124 if (idx) *idx = i;
125 return TRUE;
126 }
127 }
128 return FALSE;
129}
unsigned int idx
Definition: utils.c:41
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
struct _WINE_ACMDRIVERID::@487 * aFormatTag
DWORD cFormatTags
Definition: wineacm.h:97

Referenced by acmFormatTagDetailsW(), and acmStreamOpen().

◆ MSACM_GetDriver()

PWINE_ACMDRIVER MSACM_GetDriver ( HACMDRIVER  hDriver)

Definition at line 844 of file internal.c.

845{
847}
PWINE_ACMOBJ MSACM_GetObj(HACMOBJ hObj, DWORD type)
Definition: internal.c:823
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG _Out_ DEVINFO _In_ HDEV _In_ LPWSTR _In_ HANDLE hDriver
Definition: winddi.h:3557
#define WINE_ACMOBJ_DRIVER
Definition: wineacm.h:37

Referenced by acmDriverClose(), acmFormatTagDetailsW(), acmStreamOpen(), and MSACM_Message().

◆ MSACM_GetDriverID()

PWINE_ACMDRIVERID MSACM_GetDriverID ( HACMDRIVERID  hDriverID)

Definition at line 836 of file internal.c.

837{
838 return (PWINE_ACMDRIVERID)MSACM_GetObj((HACMOBJ)hDriverID, WINE_ACMOBJ_DRIVERID);
839}
#define WINE_ACMOBJ_DRIVERID
Definition: wineacm.h:36

Referenced by acmDriverMessage(), acmDriverOpen(), acmDriverPriority(), acmDriverRemove(), acmFilterEnumW(), and acmFormatEnumW().

◆ MSACM_GetNotifyWnd()

PWINE_ACMNOTIFYWND MSACM_GetNotifyWnd ( HACMDRIVERID  hDriver)

Definition at line 852 of file internal.c.

853{
855}
#define WINE_ACMOBJ_NOTIFYWND
Definition: wineacm.h:39

Referenced by acmDriverPriority(), and acmDriverRemove().

◆ MSACM_GetObj()

PWINE_ACMOBJ MSACM_GetObj ( HACMOBJ  hObj,
DWORD  type 
)

Definition at line 823 of file internal.c.

824{
825 PWINE_ACMOBJ pao = (PWINE_ACMOBJ)hObj;
826
827 if (pao == NULL || IsBadReadPtr(pao, sizeof(WINE_ACMOBJ)) ||
828 ((type != WINE_ACMOBJ_DONTCARE) && (type != pao->dwType)))
829 return NULL;
830 return pao;
831}
#define NULL
Definition: types.h:112
BOOL WINAPI IsBadReadPtr(IN LPCVOID lp, IN UINT_PTR ucb)
Definition: except.c:805
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
DWORD dwType
Definition: wineacm.h:44
struct _WINE_ACMOBJ * PWINE_ACMOBJ
#define WINE_ACMOBJ_DONTCARE
Definition: wineacm.h:35

Referenced by acmDriverID(), acmMetrics(), MSACM_GetDriver(), MSACM_GetDriverID(), and MSACM_GetNotifyWnd().

◆ MSACM_Message()

MMRESULT MSACM_Message ( HACMDRIVER  had,
UINT  uMsg,
LPARAM  lParam1,
LPARAM  lParam2 
)

Definition at line 872 of file internal.c.

873{
875
876 if (!pad) return MMSYSERR_INVALHANDLE;
877 if (pad->hDrvr) return SendDriverMessage(pad->hDrvr, uMsg, lParam1, lParam2);
878 if (pad->pLocalDrvrInst) return MSACM_DRIVER_SendMessage(pad->pLocalDrvrInst, uMsg, lParam1, lParam2);
879
881}
PWINE_ACMDRIVER MSACM_GetDriver(HACMDRIVER hDriver)
Definition: internal.c:844
LRESULT WINAPI SendDriverMessage(HDRVR hDriver, UINT msg, LPARAM lParam1, LPARAM lParam2)
Definition: driver.c:131
#define MMSYSERR_INVALHANDLE
Definition: mmsystem.h:101
PWINE_ACMLOCALDRIVERINST pLocalDrvrInst
Definition: wineacm.h:73
HDRVR hDrvr
Definition: wineacm.h:72

Referenced by acmDriverDetailsW(), acmDriverMessage(), acmFilterDetailsW(), acmFilterTagDetailsW(), acmFormatDetailsW(), acmFormatSuggest(), acmFormatTagDetailsW(), acmFormatTagEnumW(), acmStreamClose(), acmStreamConvert(), acmStreamOpen(), acmStreamPrepareHeader(), acmStreamReset(), acmStreamSize(), acmStreamUnprepareHeader(), and MSACM_FillCache().

◆ MSACM_OpenLocalDriver()

PWINE_ACMLOCALDRIVERINST MSACM_OpenLocalDriver ( PWINE_ACMLOCALDRIVER  paldrv,
LPARAM  lParam2 
)

Definition at line 1026 of file internal.c.

1027{
1028 PWINE_ACMLOCALDRIVERINST pDrvInst;
1029
1030 pDrvInst = HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMLOCALDRIVERINST));
1031 if (!pDrvInst)
1032 return NULL;
1033
1034 pDrvInst->pLocalDriver = paldrv;
1035 pDrvInst->dwDriverID = 0;
1036 pDrvInst->pNextACMInst = NULL;
1037 pDrvInst->bSession = FALSE;
1038
1039 /* Win32 installable drivers must support a two phase opening scheme:
1040 * + first open with NULL as lParam2 (session instance),
1041 * + then do a second open with the real non null lParam2)
1042 */
1043 if (MSACM_GetNumberOfModuleRefs(paldrv->hModule, paldrv->lpDrvProc, NULL) == 0 && lParam2)
1044 {
1046
1047 if (!MSACM_AddToList(pDrvInst, 0L))
1048 {
1049 ERR("load0 failed\n");
1050 goto exit;
1051 }
1052 ret = MSACM_OpenLocalDriver(paldrv, lParam2);
1053 if (!ret)
1054 {
1055 ERR("load1 failed\n");
1056 /* If MSACM_CloseLocalDriver returns TRUE,
1057 * then pDrvInst has been freed
1058 */
1059 if (!MSACM_CloseLocalDriver(pDrvInst))
1060 goto exit;
1061
1062 return NULL;
1063 }
1064 pDrvInst->bSession = TRUE;
1065 return ret;
1066 }
1067
1068 if (!MSACM_AddToList(pDrvInst, lParam2))
1069 {
1070 ERR("load failed\n");
1071 goto exit;
1072 }
1073
1074 TRACE("=> %p\n", pDrvInst);
1075 return pDrvInst;
1076exit:
1077 HeapFree(MSACM_hHeap, 0, pDrvInst);
1078 return NULL;
1079}
#define HeapAlloc
Definition: compat.h:733
PWINE_ACMLOCALDRIVERINST MSACM_OpenLocalDriver(PWINE_ACMLOCALDRIVER paldrv, LPARAM lParam2)
Definition: internal.c:1026
static BOOL MSACM_AddToList(PWINE_ACMLOCALDRIVERINST lpNewDrv, LPARAM lParam2)
Definition: internal.c:989
LRESULT MSACM_CloseLocalDriver(PWINE_ACMLOCALDRIVERINST paldrv)
Definition: internal.c:1081
#define exit(n)
Definition: config.h:202
#define TRACE(s)
Definition: solgame.cpp:4
PWINE_ACMLOCALDRIVERINST pNextACMInst
Definition: wineacm.h:66
int ret

Referenced by acmDriverOpen(), and MSACM_OpenLocalDriver().

◆ MSACM_RegisterAllDrivers()

void MSACM_RegisterAllDrivers ( void  )

Definition at line 354 of file internal.c.

355{
356 static const WCHAR msacm32[] = {'m','s','a','c','m','3','2','.','d','l','l','\0'};
357 static const WCHAR msacmW[] = {'M','S','A','C','M','.'};
358 static const WCHAR drv32[] = {'d','r','i','v','e','r','s','3','2','\0'};
359 static const WCHAR sys[] = {'s','y','s','t','e','m','.','i','n','i','\0'};
360 static const WCHAR drvkey[] = {'S','o','f','t','w','a','r','e','\\',
361 'M','i','c','r','o','s','o','f','t','\\',
362 'W','i','n','d','o','w','s',' ','N','T','\\',
363 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
364 'D','r','i','v','e','r','s','3','2','\0'};
365 DWORD i, cnt, bufLen, lRet, type;
366 WCHAR buf[2048], valname[64], *name, *s;
367 FILETIME lastWrite;
368 HKEY hKey;
369
370 /* FIXME: What if the user edits system.ini while the program is running?
371 * Does Windows handle that? */
372 if (MSACM_pFirstACMDriverID) return;
373
375 if (lRet == ERROR_SUCCESS) {
376 RegQueryInfoKeyW( hKey, 0, 0, 0, &cnt, 0, 0, 0, 0, 0, 0, 0);
377 for (i = 0; i < cnt; i++) {
378 bufLen = ARRAY_SIZE(buf);
379 lRet = RegEnumKeyExW(hKey, i, buf, &bufLen, 0, 0, 0, &lastWrite);
380 if (lRet != ERROR_SUCCESS) continue;
381 if (_wcsnicmp(buf, msacmW, ARRAY_SIZE(msacmW))) continue;
382 if (!(name = wcschr(buf, '='))) continue;
383 *name = 0;
385 }
386 i = 0;
387 cnt = ARRAY_SIZE(valname);
388 bufLen = sizeof(buf);
389 while(RegEnumValueW(hKey, i, valname, &cnt, 0,
390 &type, (BYTE*)buf, &bufLen) == ERROR_SUCCESS){
391 if (!_wcsnicmp(valname, msacmW, ARRAY_SIZE(msacmW)))
392 MSACM_RegisterDriver(valname, buf, 0);
393 ++i;
394 }
395 RegCloseKey( hKey );
396 }
397
398 if (GetPrivateProfileSectionW(drv32, buf, ARRAY_SIZE(buf), sys))
399 {
400 for(s = buf; *s; s += lstrlenW(s) + 1)
401 {
402 if (_wcsnicmp(s, msacmW, ARRAY_SIZE(msacmW))) continue;
403 if (!(name = wcschr(s, '='))) continue;
404 *name = 0;
405 MSACM_RegisterDriver(s, name + 1, 0);
406 *name = '=';
407 }
408 }
410 MSACM_RegisterDriver(msacm32, msacm32, 0);
411}
#define ARRAY_SIZE(A)
Definition: main.h:33
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
Definition: reg.c:2504
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
Definition: reg.c:2830
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
Definition: reg.c:3662
#define wcschr
Definition: compat.h:17
#define lstrlenW
Definition: compat.h:750
INT WINAPI GetPrivateProfileSectionW(LPCWSTR section, LPWSTR buffer, DWORD len, LPCWSTR filename)
Definition: profile.c:1351
static void MSACM_ReorderDriversByPriority(void)
Definition: internal.c:556
PWINE_ACMDRIVERID MSACM_pFirstACMDriverID
Definition: internal.c:48
PWINE_ACMDRIVERID MSACM_RegisterDriver(LPCWSTR pszDriverAlias, LPCWSTR pszFileName, PWINE_ACMLOCALDRIVER pLocalDriver)
Definition: internal.c:285
unsigned long DWORD
Definition: ntddk_ex.h:95
FxAutoRegKey hKey
GLdouble s
Definition: gl.h:2039
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define KEY_QUERY_VALUE
Definition: nt_native.h:1016
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
Definition: name.c:39
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned char BYTE
Definition: xxhash.c:193

Referenced by DllMain().

◆ MSACM_RegisterDriver()

PWINE_ACMDRIVERID MSACM_RegisterDriver ( LPCWSTR  pszDriverAlias,
LPCWSTR  pszFileName,
PWINE_ACMLOCALDRIVER  pLocalDriver 
)

Definition at line 285 of file internal.c.

287{
288 PWINE_ACMDRIVERID padid;
289
290 TRACE("(%s, %s, %p)\n",
291 debugstr_w(pszDriverAlias), debugstr_w(pszFileName), pLocalDriver);
292
293 padid = HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVERID));
294 if (!padid)
295 return NULL;
297 padid->obj.pACMDriverID = padid;
298 padid->pszDriverAlias = NULL;
299 if (pszDriverAlias)
300 {
301 padid->pszDriverAlias = HeapAlloc( MSACM_hHeap, 0, (lstrlenW(pszDriverAlias)+1) * sizeof(WCHAR) );
302 if (!padid->pszDriverAlias) {
303 HeapFree(MSACM_hHeap, 0, padid);
304 return NULL;
305 }
306 lstrcpyW( padid->pszDriverAlias, pszDriverAlias );
307 }
308 padid->pszFileName = NULL;
309 if (pszFileName)
310 {
311 padid->pszFileName = HeapAlloc( MSACM_hHeap, 0, (lstrlenW(pszFileName)+1) * sizeof(WCHAR) );
312 if (!padid->pszFileName) {
314 HeapFree(MSACM_hHeap, 0, padid);
315 return NULL;
316 }
318 }
319 padid->pLocalDriver = pLocalDriver;
320
321 padid->pACMDriverList = NULL;
322
323 if (pLocalDriver) {
324 padid->pPrevACMDriverID = NULL;
331 } else {
332 padid->pNextACMDriverID = NULL;
339 }
340 /* disable the driver if we cannot load the cache */
341 if ((!padid->pszDriverAlias || !MSACM_ReadCache(padid)) && !MSACM_FillCache(padid)) {
342 WARN("Couldn't load cache for ACM driver (%s)\n", debugstr_w(pszFileName));
344 return NULL;
345 }
346
347 if (pLocalDriver) padid->fdwSupport |= ACMDRIVERDETAILS_SUPPORTF_LOCAL;
348 return padid;
349}
#define WARN(fmt,...)
Definition: debug.h:115
#define lstrcpyW
Definition: compat.h:749
static BOOL MSACM_ReadCache(PWINE_ACMDRIVERID padid)
Definition: internal.c:210
static BOOL MSACM_FillCache(PWINE_ACMDRIVERID padid)
Definition: internal.c:134
static PWINE_ACMDRIVERID MSACM_pLastACMDriverID
Definition: internal.c:49
PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p)
Definition: internal.c:773
#define debugstr_w
Definition: kernel32.h:32
#define ACMDRIVERDETAILS_SUPPORTF_LOCAL
Definition: msacm.h:66
PWINE_ACMLOCALDRIVER pLocalDriver
Definition: wineacm.h:91
LPWSTR pszDriverAlias
Definition: wineacm.h:89
PWINE_ACMDRIVER pACMDriverList
Definition: wineacm.h:92
DWORD fdwSupport
Definition: wineacm.h:98
PWINE_ACMDRIVERID pNextACMDriverID
Definition: wineacm.h:93
PWINE_ACMDRIVERID pPrevACMDriverID
Definition: wineacm.h:94
LPWSTR pszFileName
Definition: wineacm.h:90
WINE_ACMOBJ obj
Definition: wineacm.h:88
PWINE_ACMDRIVERID pACMDriverID
Definition: wineacm.h:45
WORD WORD PSZ PSZ pszFileName
Definition: vdmdbg.h:44

Referenced by acmDriverAddW(), MSACM_RegisterAllDrivers(), and MSACM_RegisterDriverFromRegistry().

◆ MSACM_RegisterDriverFromRegistry()

PWINE_ACMDRIVERID MSACM_RegisterDriverFromRegistry ( LPCWSTR  pszRegEntry)

Definition at line 61 of file internal.c.

62{
63 static const WCHAR msacmW[] = {'M','S','A','C','M','.'};
64 static const WCHAR drvkey[] = {'S','o','f','t','w','a','r','e','\\',
65 'M','i','c','r','o','s','o','f','t','\\',
66 'W','i','n','d','o','w','s',' ','N','T','\\',
67 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
68 'D','r','i','v','e','r','s','3','2','\0'};
69 WCHAR buf[2048];
70 DWORD bufLen, lRet;
71 HKEY hKey;
72 PWINE_ACMDRIVERID padid = NULL;
73
74 /* The requested registry entry must have the format msacm.XXXXX in order to
75 be recognized in any future sessions of msacm
76 */
77 if (0 == _wcsnicmp(pszRegEntry, msacmW, ARRAY_SIZE(msacmW))) {
79 if (lRet != ERROR_SUCCESS) {
80 WARN("unable to open registry key - 0x%08x\n", lRet);
81 } else {
82 bufLen = sizeof(buf);
83 lRet = RegQueryValueExW(hKey, pszRegEntry, NULL, NULL, (LPBYTE)buf, &bufLen);
84 if (lRet != ERROR_SUCCESS) {
85 WARN("unable to query requested subkey %s - 0x%08x\n", debugstr_w(pszRegEntry), lRet);
86 } else {
87 MSACM_RegisterDriver(pszRegEntry, buf, 0);
88 }
90 }
91 }
92 return padid;
93}
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
unsigned char * LPBYTE
Definition: typedefs.h:53

Referenced by acmDriverAddW().

◆ MSACM_RegisterLocalDriver()

PWINE_ACMLOCALDRIVER MSACM_RegisterLocalDriver ( HMODULE  hModule,
DRIVERPROC  lpDriverProc 
)

Definition at line 883 of file internal.c.

884{
886
887 TRACE("(%p, %p)\n", hModule, lpDriverProc);
888 if (!hModule || !lpDriverProc) return NULL;
889
890 /* look up previous instance of local driver module */
891 for (paldrv = MSACM_pFirstACMLocalDriver; paldrv; paldrv = paldrv->pNextACMLocalDrv)
892 {
893 if (paldrv->hModule == hModule && paldrv->lpDrvProc == lpDriverProc)
894 {
895 InterlockedIncrement(&paldrv->ref);
896 return paldrv;
897 }
898 }
899
900 paldrv = HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMLOCALDRIVER));
902 paldrv->obj.pACMDriverID = 0;
903 paldrv->hModule = hModule;
904 paldrv->lpDrvProc = lpDriverProc;
905 paldrv->pACMInstList = NULL;
906 paldrv->ref = 1;
907
908 paldrv->pNextACMLocalDrv = NULL;
915
916 return paldrv;
917}
#define InterlockedIncrement
Definition: armddk.h:53
HMODULE hModule
Definition: animate.c:44
static PWINE_ACMLOCALDRIVER MSACM_pFirstACMLocalDriver
Definition: internal.c:736
static PWINE_ACMLOCALDRIVER MSACM_pLastACMLocalDriver
Definition: internal.c:737
PWINE_ACMLOCALDRIVER pPrevACMLocalDrv
Definition: wineacm.h:57
PWINE_ACMLOCALDRIVERINST pACMInstList
Definition: wineacm.h:55
PWINE_ACMLOCALDRIVER pNextACMLocalDrv
Definition: wineacm.h:56
WINE_ACMOBJ obj
Definition: wineacm.h:52
#define WINE_ACMOBJ_LOCALDRIVER
Definition: wineacm.h:40

Referenced by acmDriverAddW().

◆ MSACM_RegisterNotificationWindow()

PWINE_ACMNOTIFYWND MSACM_RegisterNotificationWindow ( HWND  hNotifyWnd,
DWORD  dwNotifyMsg 
)

Definition at line 416 of file internal.c.

417{
418 PWINE_ACMNOTIFYWND panwnd;
419
420 TRACE("(%p,0x%08x)\n", hNotifyWnd, dwNotifyMsg);
421
422 panwnd = HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMNOTIFYWND));
424 panwnd->obj.pACMDriverID = 0;
425 panwnd->hNotifyWnd = hNotifyWnd;
426 panwnd->dwNotifyMsg = dwNotifyMsg;
427 panwnd->fdwSupport = 0;
428
429 panwnd->pNextACMNotifyWnd = NULL;
436
437 return panwnd;
438}
static PWINE_ACMNOTIFYWND MSACM_pLastACMNotifyWnd
Definition: internal.c:54
WINE_ACMOBJ obj
Definition: wineacm.h:108
PWINE_ACMNOTIFYWND pPrevACMNotifyWnd
Definition: wineacm.h:113

Referenced by acmDriverAddW().

◆ MSACM_RePositionDriver()

void MSACM_RePositionDriver ( PWINE_ACMDRIVERID  padid,
DWORD  dwPriority 
)

Definition at line 504 of file internal.c.

505{
506 PWINE_ACMDRIVERID pTargetPosition = NULL;
507
508 /* Remove selected driver from linked list */
509 if (MSACM_pFirstACMDriverID == padid) {
511 }
512 if (MSACM_pLastACMDriverID == padid) {
514 }
515 if (padid->pPrevACMDriverID != NULL) {
517 }
518 if (padid->pNextACMDriverID != NULL) {
520 }
521
522 /* Look up position where selected driver should be */
523 if (dwPriority == 1) {
524 pTargetPosition = padid->pPrevACMDriverID;
525 while (pTargetPosition->pPrevACMDriverID != NULL &&
527 pTargetPosition = pTargetPosition->pPrevACMDriverID;
528 }
529 } else if (dwPriority == -1) {
530 pTargetPosition = padid->pNextACMDriverID;
531 while (pTargetPosition->pNextACMDriverID != NULL) {
532 pTargetPosition = pTargetPosition->pNextACMDriverID;
533 }
534 }
535
536 /* Place selected driver in selected position */
537 padid->pPrevACMDriverID = pTargetPosition->pPrevACMDriverID;
538 padid->pNextACMDriverID = pTargetPosition;
539 if (padid->pPrevACMDriverID != NULL) {
540 padid->pPrevACMDriverID->pNextACMDriverID = padid;
541 } else {
543 }
544 if (padid->pNextACMDriverID != NULL) {
545 padid->pNextACMDriverID->pPrevACMDriverID = padid;
546 } else {
548 }
549}

Referenced by acmDriverPriority().

◆ MSACM_UnregisterAllDrivers()

void MSACM_UnregisterAllDrivers ( void  )

Definition at line 805 of file internal.c.

806{
809
810 while (p) {
813 }
814
815 while (panwnd) {
816 panwnd = MSACM_UnRegisterNotificationWindow(panwnd);
817 }
818}
PWINE_ACMNOTIFYWND MSACM_UnRegisterNotificationWindow(const WINE_ACMNOTIFYWND *panwnd)
Definition: internal.c:481
static BOOL MSACM_WriteCache(const WINE_ACMDRIVERID *padid)
Definition: internal.c:254
GLfloat GLfloat p
Definition: glext.h:8902

Referenced by DllMain().

◆ MSACM_UnregisterDriver()

PWINE_ACMDRIVERID MSACM_UnregisterDriver ( PWINE_ACMDRIVERID  p)

Definition at line 773 of file internal.c.

774{
775 PWINE_ACMDRIVERID pNextACMDriverID;
776
777 while (p->pACMDriverList)
778 acmDriverClose((HACMDRIVER) p->pACMDriverList, 0);
779
780 HeapFree(MSACM_hHeap, 0, p->pszDriverAlias);
781 HeapFree(MSACM_hHeap, 0, p->pszFileName);
782 HeapFree(MSACM_hHeap, 0, p->aFormatTag);
783
788
789 if (p->pPrevACMDriverID)
791 if (p->pNextACMDriverID)
793
794 pNextACMDriverID = p->pNextACMDriverID;
795
796 if (p->pLocalDriver) MSACM_UnregisterLocalDriver(p->pLocalDriver);
798
799 return pNextACMDriverID;
800}
MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose)
Definition: driver.c:179
static PWINE_ACMLOCALDRIVER MSACM_UnregisterLocalDriver(PWINE_ACMLOCALDRIVER paldrv)
Definition: internal.c:739

Referenced by acmDriverRemove(), MSACM_RegisterDriver(), and MSACM_UnregisterAllDrivers().

◆ MSACM_UnRegisterNotificationWindow()

PWINE_ACMNOTIFYWND MSACM_UnRegisterNotificationWindow ( const WINE_ACMNOTIFYWND panwnd)

Definition at line 481 of file internal.c.

482{
484
485 for (p = MSACM_pFirstACMNotifyWnd; p; p = p->pNextACMNotifyWnd) {
486 if (p == panwnd) {
488
489 if (p->pPrevACMNotifyWnd) p->pPrevACMNotifyWnd->pNextACMNotifyWnd = p->pNextACMNotifyWnd;
490 if (p->pNextACMNotifyWnd) p->pNextACMNotifyWnd->pPrevACMNotifyWnd = p->pPrevACMNotifyWnd;
494
495 return pNext;
496 }
497 }
498 return NULL;
499}

Referenced by acmDriverRemove(), and MSACM_UnregisterAllDrivers().

◆ MSACM_WriteCurrentPriorities()

void MSACM_WriteCurrentPriorities ( void  )

Definition at line 668 of file internal.c.

669{
670 LONG lError;
671 HKEY hPriorityKey;
672 static const WCHAR basePriorityKey[] = {
673 'S','o','f','t','w','a','r','e','\\',
674 'M','i','c','r','o','s','o','f','t','\\',
675 'M','u','l','t','i','m','e','d','i','a','\\',
676 'A','u','d','i','o',' ','C','o','m','p','r','e','s','s','i','o','n',' ','M','a','n','a','g','e','r','\\',
677 'P','r','i','o','r','i','t','y',' ','v','4','.','0','0','\0'
678 };
679 PWINE_ACMDRIVERID padid;
680 DWORD dwPriorityCounter;
681 static const WCHAR priorityTmpl[] = {'P','r','i','o','r','i','t','y','%','l','d','\0'};
682 static const WCHAR valueTmpl[] = {'%','c',',',' ','%','s','\0'};
683 static const WCHAR converterAlias[] = {'I','n','t','e','r','n','a','l',' ','P','C','M',' ','C','o','n','v','e','r','t','e','r','\0'};
684 WCHAR szSubKey[17];
685 WCHAR szBuffer[256];
686
687 /* Delete ACM priority key and create it anew */
688 lError = RegDeleteKeyW(HKEY_CURRENT_USER, basePriorityKey);
689 if (lError != ERROR_SUCCESS && lError != ERROR_FILE_NOT_FOUND) {
690 ERR("unable to remove current key %s (0x%08x) - priority changes won't persist past application end.\n",
691 debugstr_w(basePriorityKey), lError);
692 return;
693 }
694 lError = RegCreateKeyW(HKEY_CURRENT_USER, basePriorityKey, &hPriorityKey);
695 if (lError != ERROR_SUCCESS) {
696 ERR("unable to create key %s (0x%08x) - priority changes won't persist past application end.\n",
697 debugstr_w(basePriorityKey), lError);
698 return;
699 }
700
701 /* Write current list of priorities */
702 for (dwPriorityCounter = 0, padid = MSACM_pFirstACMDriverID; padid; padid = padid->pNextACMDriverID) {
703 if (padid->fdwSupport & ACMDRIVERDETAILS_SUPPORTF_LOCAL) continue;
704 if (padid->pszDriverAlias == NULL) continue; /* internal PCM converter is last */
705
706 /* Build required value name */
707 dwPriorityCounter++;
708 swprintf(szSubKey, priorityTmpl, dwPriorityCounter);
709
710 /* Value has a 1 in front for enabled drivers and 0 for disabled drivers */
711 swprintf(szBuffer, valueTmpl, (padid->fdwSupport & ACMDRIVERDETAILS_SUPPORTF_DISABLED) ? '0' : '1', padid->pszDriverAlias);
712 _wcslwr(szBuffer);
713
714 lError = RegSetValueExW(hPriorityKey, szSubKey, 0, REG_SZ, (BYTE *)szBuffer, (lstrlenW(szBuffer) + 1) * sizeof(WCHAR));
715 if (lError != ERROR_SUCCESS) {
716 ERR("unable to write value for %s under key %s (0x%08x)\n",
717 debugstr_w(padid->pszDriverAlias), debugstr_w(basePriorityKey), lError);
718 }
719 }
720
721 /* Build required value name */
722 dwPriorityCounter++;
723 swprintf(szSubKey, priorityTmpl, dwPriorityCounter);
724
725 /* Value has a 1 in front for enabled drivers and 0 for disabled drivers */
726 swprintf(szBuffer, valueTmpl, '1', converterAlias);
727
728 lError = RegSetValueExW(hPriorityKey, szSubKey, 0, REG_SZ, (BYTE *)szBuffer, (lstrlenW(szBuffer) + 1) * sizeof(WCHAR));
729 if (lError != ERROR_SUCCESS) {
730 ERR("unable to write value for %s under key %s (0x%08x)\n",
731 debugstr_w(converterAlias), debugstr_w(basePriorityKey), lError);
732 }
733 RegCloseKey(hPriorityKey);
734}
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
Definition: reg.c:1239
LONG WINAPI RegCreateKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:1201
#define swprintf
Definition: precomp.h:40
#define REG_SZ
Definition: layer.c:22
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
long LONG
Definition: pedump.c:60
_CRTIMP wchar_t *__cdecl _wcslwr(_Inout_z_ wchar_t *_String)
#define HKEY_CURRENT_USER
Definition: winreg.h:11

Referenced by acmDriverPriority().

◆ PCM_DriverProc()

LRESULT CALLBACK PCM_DriverProc ( DWORD_PTR  dwDevID,
HDRVR  hDriv,
UINT  wMsg,
LPARAM  dwParam1,
LPARAM  dwParam2 
)

Definition at line 1325 of file pcmconverter.c.

1327{
1328 TRACE("(%08lx %p %u %08lx %08lx);\n",
1329 dwDevID, hDriv, wMsg, dwParam1, dwParam2);
1330
1331 switch (wMsg) {
1332 case DRV_LOAD: return 1;
1333 case DRV_FREE: return 1;
1334 case DRV_OPEN: return PCM_drvOpen((LPSTR)dwParam1, (PACMDRVOPENDESCW)dwParam2);
1335 case DRV_CLOSE: return PCM_drvClose(dwDevID);
1336 case DRV_ENABLE: return 1;
1337 case DRV_DISABLE: return 1;
1338 case DRV_QUERYCONFIGURE: return 1;
1339 case DRV_CONFIGURE: MessageBoxA(0, "MSACM PCM filter !", "Wine Driver", MB_OK); return 1;
1340 case DRV_INSTALL: return DRVCNF_RESTART;
1341 case DRV_REMOVE: return DRVCNF_RESTART;
1342
1344 /* no caching from other ACM drivers is done so far */
1345 return MMSYSERR_NOERROR;
1346
1348 return PCM_DriverDetails((PACMDRIVERDETAILSW)dwParam1);
1349
1351 return PCM_FormatTagDetails((PACMFORMATTAGDETAILSW)dwParam1, dwParam2);
1352
1354 return PCM_FormatDetails((PACMFORMATDETAILSW)dwParam1, dwParam2);
1355
1357 return PCM_FormatSuggest((PACMDRVFORMATSUGGEST)dwParam1);
1358
1359 case ACMDM_STREAM_OPEN:
1360 return PCM_StreamOpen((PACMDRVSTREAMINSTANCE)dwParam1);
1361
1362 case ACMDM_STREAM_CLOSE:
1363 return PCM_StreamClose((PACMDRVSTREAMINSTANCE)dwParam1);
1364
1365 case ACMDM_STREAM_SIZE:
1366 return PCM_StreamSize((PACMDRVSTREAMINSTANCE)dwParam1, (PACMDRVSTREAMSIZE)dwParam2);
1367
1369 return PCM_StreamConvert((PACMDRVSTREAMINSTANCE)dwParam1, (PACMDRVSTREAMHEADER)dwParam2);
1370
1373 /* this converter is not a hardware driver */
1376 /* this converter is not a filter */
1377 case ACMDM_STREAM_RESET:
1378 /* only needed for asynchronous driver... we aren't, so just say it */
1381 /* nothing special to do here... so don't do anything */
1382 return MMSYSERR_NOTSUPPORTED;
1383
1384 default:
1385 return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2);
1386 }
1387}
LRESULT WINAPI DefDriverProc(DWORD_PTR dwDriverIdentifier, HDRVR hDrv, UINT Msg, LPARAM lParam1, LPARAM lParam2)
Definition: driver.c:554
#define DRV_LOAD(x)
#define DRV_QUERYCONFIGURE
Definition: mmsystem.h:126
#define MMSYSERR_NOTSUPPORTED
Definition: mmsystem.h:104
#define DRVCNF_RESTART
Definition: mmsystem.h:135
#define DRV_REMOVE
Definition: mmsystem.h:128
#define DRV_ENABLE
Definition: mmsystem.h:120
#define DRV_CONFIGURE
Definition: mmsystem.h:125
#define DRV_OPEN
Definition: mmsystem.h:121
#define DRV_INSTALL
Definition: mmsystem.h:127
#define MMSYSERR_NOERROR
Definition: mmsystem.h:96
#define DRV_FREE
Definition: mmsystem.h:124
#define DRV_DISABLE
Definition: mmsystem.h:123
#define ACMDM_STREAM_PREPARE
Definition: msacmdrv.h:63
#define ACMDM_STREAM_CLOSE
Definition: msacmdrv.h:59
#define ACMDM_STREAM_CONVERT
Definition: msacmdrv.h:61
#define ACMDM_FORMAT_SUGGEST
Definition: msacmdrv.h:53
#define ACMDM_FILTER_DETAILS
Definition: msacmdrv.h:56
#define ACMDM_HARDWARE_WAVE_CAPS_INPUT
Definition: msacmdrv.h:48
#define ACMDM_DRIVER_NOTIFY
Definition: msacmdrv.h:45
#define ACMDM_FORMAT_DETAILS
Definition: msacmdrv.h:52
#define ACMDM_STREAM_SIZE
Definition: msacmdrv.h:60
#define ACMDM_FILTERTAG_DETAILS
Definition: msacmdrv.h:55
#define ACMDM_HARDWARE_WAVE_CAPS_OUTPUT
Definition: msacmdrv.h:49
#define ACMDM_FORMATTAG_DETAILS
Definition: msacmdrv.h:51
#define ACMDM_STREAM_UNPREPARE
Definition: msacmdrv.h:64
#define ACMDM_STREAM_OPEN
Definition: msacmdrv.h:58
#define ACMDM_DRIVER_DETAILS
Definition: msacmdrv.h:46
#define ACMDM_STREAM_RESET
Definition: msacmdrv.h:62
static LRESULT PCM_StreamOpen(PACMDRVSTREAMINSTANCE adsi)
static DWORD PCM_drvOpen(LPCSTR str, PACMDRVOPENDESCW adod)
Definition: pcmconverter.c:54
static LRESULT PCM_StreamConvert(PACMDRVSTREAMINSTANCE adsi, PACMDRVSTREAMHEADER adsh)
static LRESULT PCM_DriverDetails(PACMDRIVERDETAILSW add)
Definition: pcmconverter.c:972
static LRESULT PCM_FormatDetails(PACMFORMATDETAILSW afd, DWORD dwQuery)
static LRESULT PCM_FormatTagDetails(PACMFORMATTAGDETAILSW aftd, DWORD dwQuery)
static LRESULT PCM_StreamSize(PACMDRVSTREAMINSTANCE adsi, PACMDRVSTREAMSIZE adss)
static DWORD PCM_drvClose(DWORD dwDevID)
Definition: pcmconverter.c:66
static LRESULT PCM_FormatSuggest(PACMDRVFORMATSUGGEST adfs)
static LRESULT PCM_StreamClose(PACMDRVSTREAMINSTANCE adsi)
int WINAPI MessageBoxA(_In_opt_ HWND hWnd, _In_opt_ LPCSTR lpText, _In_opt_ LPCSTR lpCaption, _In_ UINT uType)
#define MB_OK
Definition: winuser.h:790
char * LPSTR
Definition: xmlstorage.h:182

Variable Documentation

◆ DECLSPEC_HIDDEN

HINSTANCE MSACM_hInstance32 DECLSPEC_HIDDEN
extern

Definition at line 118 of file wineacm.h.