Commit 29c08dd4 authored by Patrik Stridvall's avatar Patrik Stridvall Committed by Alexandre Julliard

Started the implementation of MSACM.DLL and MSACM32.DLL.

parent 686db71f
DEFS = @DLLFLAGS@ -D__WINE__
TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = msacm
C_SRCS = \
msacm_main.c
all: $(MODULE).o
@MAKE_RULES@
### Dependencies:
/*
* MSACM library
*
* Copyright 1998 Patrik Stridvall
*/
#include "windows.h"
#include "winerror.h"
#include "wintypes.h"
#include "debug.h"
#include "mmsystem.h"
#include "msacm.h"
/***********************************************************************
* ACMGETVERSION (MSACM.7)
*/
DWORD WINAPI acmGetVersion16()
{
FIXME(msacm, "(): stub\n");
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return 0; /* FIXME */
}
/***********************************************************************
* ACMMETRICS (MSACM.8)
*/
MMRESULT16 WINAPI acmMetrics16(
HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric)
{
FIXME(msacm, "(0x%04x, %d, %p): stub\n", hao, uMetric, pMetric);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMDRIVERENUM (MSACM.10)
*/
MMRESULT16 WINAPI acmDriverEnum16(
ACMDRIVERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(%p, %ld, %ld): stub\n",
fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMDRIVERDETAILS (MSACM.11)
*/
MMRESULT16 WINAPI acmDriverDetails16(
HACMDRIVERID16 hadid, LPACMDRIVERDETAILS16 padd, DWORD fdwDetails)
{
FIXME(msacm, "(0x%04x, %p, %ld): stub\n", hadid, padd, fdwDetails);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMDRIVERADD (MSACM.12)
*/
MMRESULT16 WINAPI acmDriverAdd16(
LPHACMDRIVERID16 phadid, HINSTANCE16 hinstModule,
LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
{
FIXME(msacm, "(%p, 0x%04x, %ld, %ld, %ld): stub\n",
phadid, hinstModule, lParam, dwPriority, fdwAdd
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMDRIVERREMOVE (MSACM.13)
*/
MMRESULT16 WINAPI acmDriverRemove16(
HACMDRIVERID16 hadid, DWORD fdwRemove)
{
FIXME(msacm, "(0x%04x, %ld): stub\n", hadid, fdwRemove);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMDRIVEROPEN (MSACM.14)
*/
MMRESULT16 WINAPI acmDriverOpen16(
LPHACMDRIVER16 phad, HACMDRIVERID16 hadid, DWORD fdwOpen)
{
FIXME(msacm, "(%p, 0x%04x, %ld): stub\n", phad, hadid, fdwOpen);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMDRIVERCLOSE (MSACM.15)
*/
MMRESULT16 WINAPI acmDriverClose16(
HACMDRIVER16 had, DWORD fdwClose)
{
FIXME(msacm, "(0x%04x, %ld): stub\n", had, fdwClose);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMDRIVERMESSAGE (MSACM.16)
*/
LRESULT WINAPI acmDriverMessage16(
HACMDRIVER16 had, UINT16 uMsg, LPARAM lParam1, LPARAM lParam2)
{
FIXME(msacm, "(0x%04x, %d, %ld, %ld): stub\n",
had, uMsg, lParam1, lParam2
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return 0;
}
/***********************************************************************
* ACMDRIVERID (MSACM.17)
*/
MMRESULT16 WINAPI acmDriverID16(
HACMOBJ16 hao, LPHACMDRIVERID16 phadid, DWORD fdwDriverID)
{
FIXME(msacm, "(0x%04x, %p, %ld): stub\n", hao, phadid, fdwDriverID);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMDRIVERPRIORITY (MSACM.18)
*/
MMRESULT16 WINAPI acmDriverPriority16(
HACMDRIVERID16 hadid, DWORD dwPriority, DWORD fdwPriority)
{
FIXME(msacm, "(0x%04x, %ld, %ld): stub\n",
hadid, dwPriority, fdwPriority
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMFORMATTAGDETAILS (MSACM.30)
*/
MMRESULT16 WINAPI acmFormatTagDetails16(
HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, DWORD fdwDetails)
{
FIXME(msacm, "(0x%04x, %p, %ld): stub\n", had, paftd, fdwDetails);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMFORMATTAGENUM (MSACM.31)
*/
MMRESULT16 WINAPI acmFormatTagEnum16(
HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd,
ACMFORMATTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(0x%04x, %p, %p, %ld, %ld): stub\n",
had, paftd, fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMFORMATCHOOSE (MSACM.40)
*/
MMRESULT16 WINAPI acmFormatChoose16(
LPACMFORMATCHOOSE16 pafmtc)
{
FIXME(msacm, "(%p): stub\n", pafmtc);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMFORMATDETAILS (MSACM.41)
*/
MMRESULT16 WINAPI acmFormatDetails16(
HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, DWORD fdwDetails)
{
FIXME(msacm, "(0x%04x, %p, %ld): stub\n", had, pafd, fdwDetails);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMFORMATENUM (MSACM.42)
*/
MMRESULT16 WINAPI acmFormatEnum16(
HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd,
ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(0x%04x, %p, %p, %ld, %ld): stub\n",
had, pafd, fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMFORMATSUGGEST (MSACM.45)
*/
MMRESULT16 WINAPI acmFormatSuggest16(
HACMDRIVER16 had, LPWAVEFORMATEX16 pwfxSrc,
LPWAVEFORMATEX16 pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest)
{
FIXME(msacm, "(0x%04x, %p, %p, %ld, %ld): stub\n",
had, pwfxSrc, pwfxDst, cbwfxDst, fdwSuggest
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMFILTERTAGDETAILS (MSACM.50)
*/
MMRESULT16 WINAPI acmFilterTagDetails16(
HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, DWORD fdwDetails)
{
FIXME(msacm, "(0x%04x, %p, %ld): stub\n", had, paftd, fdwDetails);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMFILTERTAGENUM (MSACM.51)
*/
MMRESULT16 WINAPI acmFilterTagEnum16(
HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd,
ACMFILTERTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(0x%04x, %p, %p, %ld, %ld): stub\n",
had, paftd, fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMFILTERCHOOSE (MSACM.60)
*/
MMRESULT16 WINAPI acmFilterChoose16(
LPACMFILTERCHOOSE16 pafltrc)
{
FIXME(msacm, "(%p): stub\n", pafltrc);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMFILTERDETAILS (MSACM.61)
*/
MMRESULT16 WINAPI acmFilterDetails16(
HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, DWORD fdwDetails)
{
FIXME(msacm, "(0x%04x, %p, %ld): stub\n", had, pafd, fdwDetails);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMFILTERENUM (MSACM.62)
*/
MMRESULT16 WINAPI acmFilterEnum16(
HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd,
ACMFILTERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(0x%04x, %p, %p, %ld, %ld): stub\n",
had, pafd, fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMSTREAMOPEN (MSACM.70)
*/
MMRESULT16 WINAPI acmStreamOpen16(
LPHACMSTREAM16 phas, HACMDRIVER16 had,
LPWAVEFORMATEX16 pwfxSrc, LPWAVEFORMATEX16 pwfxDst,
LPWAVEFILTER16 pwfltr, DWORD dwCallback,
DWORD dwInstance, DWORD fdwOpen)
{
FIXME(msacm, "(%p, 0x%04x, %p, %p, %p, %ld, %ld, %ld): stub\n",
phas, had, pwfxSrc, pwfxDst, pwfltr,
dwCallback, dwInstance, fdwOpen
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMSTREAMCLOSE (MSACM.71)
*/
MMRESULT16 WINAPI acmStreamClose16(
HACMSTREAM16 has, DWORD fdwClose)
{
FIXME(msacm, "(0x%04x, %ld): stub\n", has, fdwClose);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMSTREAMSIZE (MSACM.72)
*/
MMRESULT16 WINAPI acmStreamSize16(
HACMSTREAM16 has, DWORD cbInput,
LPDWORD pdwOutputBytes, DWORD fdwSize)
{
FIXME(msacm, "(0x%04x, %ld, %p, %ld): stub\n",
has, cbInput, pdwOutputBytes, fdwSize
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMSTREAMCONVERT (MSACM.75)
*/
MMRESULT16 WINAPI acmStreamConvert16(
HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwConvert)
{
FIXME(msacm, "(0x%04x, %p, %ld): stub\n", has, pash, fdwConvert);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMSTREAMRESET (MSACM.76)
*/
MMRESULT16 WINAPI acmStreamReset16(
HACMSTREAM16 has, DWORD fdwReset)
{
FIXME(msacm, "(0x%04x, %ld): stub\n", has, fdwReset);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMSTREAMPREPAREHEADER (MSACM.77)
*/
MMRESULT16 WINAPI acmStreamPrepareHeader16(
HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwPrepare)
{
FIXME(msacm, "(0x%04x, %p, %ld): stub\n", has, pash, fdwPrepare);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMSTREAMUNPREPAREHEADER (MSACM.78)
*/
MMRESULT16 WINAPI acmStreamUnprepareHeader16(
HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwUnprepare)
{
FIXME(msacm, "(0x%04x, %p, %ld): stub\n",
has, pash, fdwUnprepare
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* ACMAPPLICATIONEXIT (MSACM.150)
* FIXME
* No documentation found.
*/
/***********************************************************************
* ACMHUGEPAGELOCK (MSACM.175)
* FIXME
* No documentation found.
*/
/***********************************************************************
* ACMHUGEPAGEUNLOCK (MSACM.176)
* FIXME
* No documentation found.
*/
/***********************************************************************
* ACMOPENCONVERSION (MSACM.200)
* FIXME
* No documentation found.
*/
/***********************************************************************
* ACMCLOSECONVERSION (MSACM.201)
* FIXME
* No documentation found.
*/
/***********************************************************************
* ACMCONVERT (MSACM.202)
* FIXME
* No documentation found.
*/
/***********************************************************************
* ACMCHOOSEFORMAT (MSACM.203)
* FIXME
* No documentation found.
*/
DEFS = @DLLFLAGS@ -D__WINE__
TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = msacm32
C_SRCS = \
builtin.c \
driver.c \
filter.c \
format.c \
internal.c \
msacm32_main.c \
stream.c
all: $(MODULE).o
@MAKE_RULES@
### Dependencies:
/*
* MSACM32 library
*
* Copyright 1998 Patrik Stridvall
*/
#include "windows.h"
#include "winerror.h"
#include "wintypes.h"
#include "debug.h"
#include "driver.h"
#include "heap.h"
#include "mmsystem.h"
#include "msacm.h"
#include "msacmdrv.h"
/***********************************************************************
* MSACM_BuiltinDrivers
*/
LONG MSACM_DummyDriverProc(
DWORD dwDriverId, HDRVR32 hdrvr, UINT32 msg,
LONG lParam1, LONG lParam2);
WINE_ACMBUILTINDRIVER32 MSACM_BuiltinDrivers32[] = {
{ "MSACM.dummy", &MSACM_DummyDriverProc },
{ NULL, NULL }
};
/***********************************************************************
* MSACM_DummyDriverProc
*/
LONG MSACM_DummyDriverProc(
DWORD dwDriverId, HDRVR32 hdrvr, UINT32 msg,
LONG lParam1, LONG lParam2)
{
switch(msg)
{
case DRV_LOAD:
case DRV_ENABLE:
case DRV_OPEN:
case DRV_CLOSE:
case DRV_DISABLE:
case DRV_FREE:
case DRV_CONFIGURE:
case DRV_QUERYCONFIGURE:
case DRV_INSTALL:
case DRV_REMOVE:
case DRV_EXITSESSION:
case DRV_EXITAPPLICATION:
case DRV_POWER:
case ACMDM_DRIVER_NOTIFY:
case ACMDM_DRIVER_DETAILS:
case ACMDM_HARDWARE_WAVE_CAPS_INPUT:
case ACMDM_HARDWARE_WAVE_CAPS_OUTPUT:
case ACMDM_FORMATTAG_DETAILS:
case ACMDM_FORMAT_DETAILS:
case ACMDM_FORMAT_SUGGEST:
case ACMDM_FILTERTAG_DETAILS:
case ACMDM_FILTER_DETAILS:
case ACMDM_STREAM_OPEN:
case ACMDM_STREAM_CLOSE:
case ACMDM_STREAM_SIZE:
case ACMDM_STREAM_CONVERT:
case ACMDM_STREAM_RESET:
case ACMDM_STREAM_PREPARE:
case ACMDM_STREAM_UNPREPARE:
case ACMDM_STREAM_UPDATE:
default:
/* FIXME: DefDriverProc not implemented */
#if 0
DefDriverProc32(dwDriverId, hdrvr, msg, lParam1, lParam2);
#endif
break;
}
return 0;
}
/*
* MSACM32 library
*
* Copyright 1998 Patrik Stridvall
*/
#include "windows.h"
#include "winerror.h"
#include "wintypes.h"
#include "debug.h"
#include "driver.h"
#include "heap.h"
#include "mmsystem.h"
#include "msacm.h"
#include "msacmdrv.h"
#include "winreg.h"
/***********************************************************************
* acmDriverAddA (MSACM32.2)
*/
MMRESULT32 WINAPI acmDriverAdd32A(
PHACMDRIVERID32 phadid, HINSTANCE32 hinstModule,
LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
{
PWINE_ACMLOCALDRIVER32 pld;
if(!phadid)
return MMSYSERR_INVALPARAM;
/* Check if any unknown flags */
if(fdwAdd &
~(ACM_DRIVERADDF_FUNCTION|ACM_DRIVERADDF_NOTIFYHWND|
ACM_DRIVERADDF_GLOBAL))
return MMSYSERR_INVALFLAG;
/* Check if any incompatible flags */
if((fdwAdd & ACM_DRIVERADDF_FUNCTION) &&
(fdwAdd & ACM_DRIVERADDF_NOTIFYHWND))
return MMSYSERR_INVALFLAG;
pld = HeapAlloc(MSACM_hHeap32, 0, sizeof(WINE_ACMLOCALDRIVER32));
pld->pfnDriverProc = (DRIVERPROC32)
GetProcAddress32(hinstModule, "DriverProc");
*phadid = (HACMDRIVERID32) MSACM_RegisterDriver32(NULL, NULL, pld);
/* FIXME: lParam, dwPriority and fdwAdd ignored */
return MMSYSERR_NOERROR;
}
/***********************************************************************
* acmDriverAddW (MSACM32.3)
* FIXME
* Not implemented
*/
MMRESULT32 WINAPI acmDriverAdd32W(
PHACMDRIVERID32 phadid, HINSTANCE32 hinstModule,
LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
{
FIXME(msacm, "(%p, 0x%08x, %ld, %ld, %ld): stub\n",
phadid, hinstModule, lParam, dwPriority, fdwAdd
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmDriverClose (MSACM32.4)
*/
MMRESULT32 WINAPI acmDriverClose32(
HACMDRIVER32 had, DWORD fdwClose)
{
PWINE_ACMDRIVER32 p;
if(fdwClose)
return MMSYSERR_INVALFLAG;
p = MSACM_GetDriver32(had);
if(!p)
return MMSYSERR_INVALHANDLE;
p->obj.pACMDriverID->pACMDriver = NULL;
/* FIXME: CloseDriver32 not implemented */
#if 0
if(p->hDrvr)
CloseDriver32(p->hDrvr, 0, 0);
#endif
HeapFree(MSACM_hHeap32, 0, p);
return MMSYSERR_NOERROR;
}
/***********************************************************************
* acmDriverDetailsA (MSACM32.5)
*/
MMRESULT32 WINAPI acmDriverDetails32A(
HACMDRIVERID32 hadid, PACMDRIVERDETAILS32A padd, DWORD fdwDetails)
{
PWINE_ACMDRIVERID32 p;
MMRESULT32 mmr;
BOOL32 bOpenTemporary;
p = MSACM_GetDriverID32(hadid);
if(!p)
return MMSYSERR_INVALHANDLE;
if(fdwDetails)
return MMSYSERR_INVALFLAG;
bOpenTemporary = !p->pACMDriver;
if(bOpenTemporary) {
bOpenTemporary = TRUE;
acmDriverOpen32((PHACMDRIVER32) &p->pACMDriver, hadid, 0);
}
/* FIXME
* How does the driver know if the ANSI or
* the UNICODE variant of PACMDRIVERDETAILS is used?
* It might check cbStruct or does it only accept ANSI.
*/
mmr = (MMRESULT32) acmDriverMessage32(
(HACMDRIVER32) p->pACMDriver, ACMDM_DRIVER_DETAILS,
(LPARAM) padd, 0
);
if(bOpenTemporary) {
acmDriverClose32((HACMDRIVER32) p->pACMDriver, 0);
p->pACMDriver = NULL;
}
return mmr;
}
/***********************************************************************
* acmDriverDetailsW (MSACM32.6)
* FIXME
* Not implemented
*/
MMRESULT32 WINAPI acmDriverDetails32W(
HACMDRIVERID32 hadid, PACMDRIVERDETAILS32W padd, DWORD fdwDetails)
{
FIXME(msacm, "(0x%08x, %p, %ld): stub\n", hadid, padd, fdwDetails);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmDriverEnum (MSACM32.7)
*/
MMRESULT32 WINAPI acmDriverEnum32(
ACMDRIVERENUMCB32 fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
PWINE_ACMDRIVERID32 p;
if(!fnCallback)
{
return MMSYSERR_INVALPARAM;
}
if(fdwEnum && ~(ACM_DRIVERENUMF_NOLOCAL|ACM_DRIVERENUMF_DISABLED))
{
return MMSYSERR_INVALFLAG;
}
p = MSACM_pFirstACMDriverID32;
while(p)
{
(*fnCallback)((HACMDRIVERID32) p, dwInstance, ACMDRIVERDETAILS_SUPPORTF_CODEC);
p = p->pNextACMDriverID;
}
return MMSYSERR_NOERROR;
}
/***********************************************************************
* acmDriverID (MSACM32.8)
*/
MMRESULT32 WINAPI acmDriverID32(
HACMOBJ32 hao, PHACMDRIVERID32 phadid, DWORD fdwDriverID)
{
PWINE_ACMOBJ32 pao;
pao = MSACM_GetObj32(hao);
if(!pao)
return MMSYSERR_INVALHANDLE;
if(!phadid)
return MMSYSERR_INVALPARAM;
if(fdwDriverID)
return MMSYSERR_INVALFLAG;
*phadid = (HACMDRIVERID32) pao->pACMDriverID;
return MMSYSERR_NOERROR;
}
/***********************************************************************
* acmDriverMessage (MSACM32.9)
* FIXME
* Not implemented
*/
LRESULT WINAPI acmDriverMessage32(
HACMDRIVER32 had, UINT32 uMsg, LPARAM lParam1, LPARAM lParam2)
{
PWINE_ACMDRIVER32 pad = MSACM_GetDriver32(had);
if(!pad)
return MMSYSERR_INVALPARAM;
/* FIXME: Check if uMsg legal */
if(!SendDriverMessage32(pad->hDrvr, uMsg, lParam1, lParam2))
return MMSYSERR_NOTSUPPORTED;
return MMSYSERR_NOERROR;
}
/***********************************************************************
* acmDriverOpen (MSACM32.10)
*/
MMRESULT32 WINAPI acmDriverOpen32(
PHACMDRIVER32 phad, HACMDRIVERID32 hadid, DWORD fdwOpen)
{
PWINE_ACMDRIVERID32 padid;
if(!phad)
return MMSYSERR_INVALPARAM;
padid = MSACM_GetDriverID32(hadid);
if(!padid)
return MMSYSERR_INVALHANDLE;
if(fdwOpen)
return MMSYSERR_INVALFLAG;
if(padid->pACMDriver)
{
/* FIXME: Is it allowed? */
ERR(msacm, "Can't open driver twice\n");
return MMSYSERR_ERROR;
}
padid->pACMDriver = HeapAlloc(
MSACM_hHeap32, 0, sizeof(WINE_ACMDRIVER32)
);
padid->pACMDriver->obj.pACMDriverID = padid;
if(!padid->pACMLocalDriver)
padid->pACMDriver->hDrvr =
OpenDriver32A(padid->pszDriverAlias, "drivers32", 0);
else
{
padid->pACMDriver->hDrvr = MSACM_OpenDriverProc32(
padid->pACMLocalDriver->pfnDriverProc
);
}
if(!padid->pACMDriver->hDrvr)
return MMSYSERR_ERROR;
/* FIXME: Create a WINE_ACMDRIVER32 */
*phad = (HACMDRIVER32) NULL;
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmDriverPriority (MSACM32.11)
*/
MMRESULT32 WINAPI acmDriverPriority32(
HACMDRIVERID32 hadid, DWORD dwPriority, DWORD fdwPriority)
{
PWINE_ACMDRIVERID32 padid;
CHAR szSubKey[17];
CHAR szBuffer[256];
LONG lBufferLength = sizeof(szBuffer);
LONG lError;
HKEY hPriorityKey;
DWORD dwPriorityCounter;
padid = MSACM_GetDriverID32(hadid);
if(!padid)
return MMSYSERR_INVALHANDLE;
/* Check for unknown flags */
if(fdwPriority &
~(ACM_DRIVERPRIORITYF_ENABLE|ACM_DRIVERPRIORITYF_DISABLE|
ACM_DRIVERPRIORITYF_BEGIN|ACM_DRIVERPRIORITYF_END))
return MMSYSERR_INVALFLAG;
/* Check for incompatible flags */
if((fdwPriority & ACM_DRIVERPRIORITYF_ENABLE) &&
(fdwPriority & ACM_DRIVERPRIORITYF_DISABLE))
return MMSYSERR_INVALFLAG;
/* Check for incompatible flags */
if((fdwPriority & ACM_DRIVERPRIORITYF_BEGIN) &&
(fdwPriority & ACM_DRIVERPRIORITYF_END))
return MMSYSERR_INVALFLAG;
lError = RegOpenKey32A(HKEY_CURRENT_USER,
"Software\\Microsoft\\Multimedia\\"
"Audio Compression Manager\\Priority v4.00",
&hPriorityKey
);
/* FIXME: Create key */
if(lError != ERROR_SUCCESS)
return MMSYSERR_ERROR;
for(dwPriorityCounter = 1; ; dwPriorityCounter++)
{
snprintf(szSubKey, 17, "Priorty%ld", dwPriorityCounter);
lError = RegQueryValue32A(hPriorityKey, szSubKey, szBuffer, &lBufferLength);
if(lError != ERROR_SUCCESS)
break;
FIXME(msacm, "(0x%08x, %ld, %ld): stub (partial)\n",
hadid, dwPriority, fdwPriority
);
break;
}
RegCloseKey(hPriorityKey);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmDriverRemove (MSACM32.12)
*/
MMRESULT32 WINAPI acmDriverRemove32(
HACMDRIVERID32 hadid, DWORD fdwRemove)
{
PWINE_ACMDRIVERID32 padid;
padid = MSACM_GetDriverID32(hadid);
if(!padid)
return MMSYSERR_INVALHANDLE;
if(fdwRemove)
return MMSYSERR_INVALFLAG;
MSACM_UnregisterDriver32(padid);
return MMSYSERR_NOERROR;
}
/*
* MSACM32 library
*
* Copyright 1998 Patrik Stridvall
*/
#include "windows.h"
#include "winerror.h"
#include "wintypes.h"
#include "debug.h"
#include "mmsystem.h"
#include "msacm.h"
#include "msacmdrv.h"
/***********************************************************************
* acmFilterChooseA (MSACM32.13)
*/
MMRESULT32 WINAPI acmFilterChoose32A(
PACMFILTERCHOOSE32A pafltrc)
{
FIXME(msacm, "(%p): stub\n", pafltrc);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFilterChooseW (MSACM32.14)
*/
MMRESULT32 WINAPI acmFilterChoose32W(
PACMFILTERCHOOSE32W pafltrc)
{
FIXME(msacm, "(%p): stub\n", pafltrc);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFilterDetailsA (MSACM32.15)
*/
MMRESULT32 WINAPI acmFilterDetails32A(
HACMDRIVER32 had, PACMFILTERDETAILS32A pafd, DWORD fdwDetails)
{
if(fdwDetails & ~(ACM_FILTERDETAILSF_FILTER))
return MMSYSERR_INVALFLAG;
/* FIXME
* How does the driver know if the ANSI or
* the UNICODE variant of PACMFILTERDETAILS is used?
* It might check cbStruct or does it only accept ANSI.
*/
return (MMRESULT32) acmDriverMessage32(
had, ACMDM_FILTER_DETAILS,
(LPARAM) pafd, (LPARAM) fdwDetails
);
}
/***********************************************************************
* acmFilterDetailsW (MSACM32.16)
*/
MMRESULT32 WINAPI acmFilterDetails32W(
HACMDRIVER32 had, PACMFILTERDETAILS32W pafd, DWORD fdwDetails)
{
FIXME(msacm, "(0x%08x, %p, %ld): stub\n", had, pafd, fdwDetails);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFilterEnumA (MSACM32.17)
*/
MMRESULT32 WINAPI acmFilterEnum32A(
HACMDRIVER32 had, PACMFILTERDETAILS32A pafd,
ACMFILTERENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(0x%08x, %p, %p, %ld, %ld): stub\n",
had, pafd, fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFilterEnumW (MSACM32.18)
*/
MMRESULT32 WINAPI acmFilterEnum32W(
HACMDRIVER32 had, PACMFILTERDETAILS32W pafd,
ACMFILTERENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(0x%08x, %p, %p, %ld, %ld): stub\n",
had, pafd, fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFilterTagDetailsA (MSACM32.19)
*/
MMRESULT32 WINAPI acmFilterTagDetails32A(
HACMDRIVER32 had, PACMFILTERTAGDETAILS32A paftd, DWORD fdwDetails)
{
if(fdwDetails &
~(ACM_FILTERTAGDETAILSF_FILTERTAG|
ACM_FILTERTAGDETAILSF_LARGESTSIZE))
return MMSYSERR_INVALFLAG;
/* FIXME
* How does the driver know if the ANSI or
* the UNICODE variant of PACMFILTERTAGDETAILS is used?
* It might check cbStruct or does it only accept ANSI.
*/
return (MMRESULT32) acmDriverMessage32(
had, ACMDM_FILTERTAG_DETAILS,
(LPARAM) paftd, (LPARAM) fdwDetails
);
}
/***********************************************************************
* acmFilterTagDetailsW (MSACM32.20)
*/
MMRESULT32 WINAPI acmFilterTagDetails32W(
HACMDRIVER32 had, PACMFILTERTAGDETAILS32W paftd, DWORD fdwDetails)
{
FIXME(msacm, "(0x%08x, %p, %ld): stub\n", had, paftd, fdwDetails);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFilterTagEnumA (MSACM32.21)
*/
MMRESULT32 WINAPI acmFilterTagEnum32A(
HACMDRIVER32 had, PACMFILTERTAGDETAILS32A paftd,
ACMFILTERTAGENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(0x%08x, %p, %p, %ld, %ld): stub\n",
had, paftd, fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFilterTagEnumW (MSACM32.22)
*/
MMRESULT32 WINAPI acmFilterTagEnum32W(
HACMDRIVER32 had, PACMFILTERTAGDETAILS32W paftd,
ACMFILTERTAGENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(0x%08x, %p, %p, %ld, %ld): stub\n",
had, paftd, fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/*
* MSACM32 library
*
* Copyright 1998 Patrik Stridvall
*/
#include "windows.h"
#include "winerror.h"
#include "wintypes.h"
#include "debug.h"
#include "mmsystem.h"
#include "msacm.h"
#include "msacmdrv.h"
/***********************************************************************
* acmFormatChooseA (MSACM32.23)
*/
MMRESULT32 WINAPI acmFormatChoose32A(
PACMFORMATCHOOSE32A pafmtc)
{
FIXME(msacm, "(%p): stub\n", pafmtc);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFormatChooseW (MSACM32.24)
*/
MMRESULT32 WINAPI acmFormatChoose32W(
PACMFORMATCHOOSE32W pafmtc)
{
FIXME(msacm, "(%p): stub\n", pafmtc);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFormatDetailsA (MSACM32.25)
*/
MMRESULT32 WINAPI acmFormatDetails32A(
HACMDRIVER32 had, PACMFORMATDETAILS32A pafd, DWORD fdwDetails)
{
if(fdwDetails & ~(ACM_FORMATDETAILSF_FORMAT))
return MMSYSERR_INVALFLAG;
/* FIXME
* How does the driver know if the ANSI or
* the UNICODE variant of PACMFORMATDETAILS is used?
* It might check cbStruct or does it only accept ANSI.
*/
return (MMRESULT32) acmDriverMessage32(
had, ACMDM_FORMAT_DETAILS,
(LPARAM) pafd, (LPARAM) fdwDetails
);
}
/***********************************************************************
* acmFormatDetailsW (MSACM32.26)
*/
MMRESULT32 WINAPI acmFormatDetails32W(
HACMDRIVER32 had, PACMFORMATDETAILS32W pafd, DWORD fdwDetails)
{
FIXME(msacm, "(0x%08x, %p, %ld): stub\n", had, pafd, fdwDetails);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFormatEnumA (MSACM32.27)
*/
MMRESULT32 WINAPI acmFormatEnum32A(
HACMDRIVER32 had, PACMFORMATDETAILS32A pafd,
ACMFORMATENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(0x%08x, %p, %p, %ld, %ld): stub\n",
had, pafd, fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFormatEnumW (MSACM32.28)
*/
MMRESULT32 WINAPI acmFormatEnum32W(
HACMDRIVER32 had, PACMFORMATDETAILS32W pafd,
ACMFORMATENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(0x%08x, %p, %p, %ld, %ld): stub\n",
had, pafd, fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFormatSuggest (MSACM32.29)
*/
MMRESULT32 WINAPI acmFormatSuggest32(
HACMDRIVER32 had, PWAVEFORMATEX32 pwfxSrc, PWAVEFORMATEX32 pwfxDst,
DWORD cbwfxDst, DWORD fdwSuggest)
{
FIXME(msacm, "(0x%08x, %p, %p, %ld, %ld): stub\n",
had, pwfxSrc, pwfxDst, cbwfxDst, fdwSuggest
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFormatTagDetailsA (MSACM32.30)
*/
MMRESULT32 WINAPI acmFormatTagDetails32A(
HACMDRIVER32 had, PACMFORMATTAGDETAILS32A paftd, DWORD fdwDetails)
{
if(fdwDetails &
~(ACM_FORMATTAGDETAILSF_FORMATTAG|ACM_FORMATTAGDETAILSF_LARGESTSIZE))
return MMSYSERR_INVALFLAG;
/* FIXME
* How does the driver know if the ANSI or
* the UNICODE variant of PACMFORMATTAGDETAILS is used?
* It might check cbStruct or does it only accept ANSI.
*/
return (MMRESULT32) acmDriverMessage32(
had, ACMDM_FORMATTAG_DETAILS,
(LPARAM) paftd, (LPARAM) fdwDetails
);
}
/***********************************************************************
* acmFormatTagDetailsW (MSACM32.31)
*/
MMRESULT32 WINAPI acmFormatTagDetails32W(
HACMDRIVER32 had, PACMFORMATTAGDETAILS32W paftd, DWORD fdwDetails)
{
FIXME(msacm, "(0x%08x, %p, %ld): stub\n", had, paftd, fdwDetails);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFormatTagEnumA (MSACM32.32)
*/
MMRESULT32 WINAPI acmFormatTagEnum32A(
HACMDRIVER32 had, PACMFORMATTAGDETAILS32A paftd,
ACMFORMATTAGENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(0x%08x, %p, %p, %ld, %ld): stub\n",
had, paftd, fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFormatTagEnumW (MSACM32.33)
*/
MMRESULT32 WINAPI acmFormatTagEnum32W(
HACMDRIVER32 had, PACMFORMATTAGDETAILS32W paftd,
ACMFORMATTAGENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum)
{
FIXME(msacm, "(0x%08x, %p, %p, %ld, %ld): stub\n",
had, paftd, fnCallback, dwInstance, fdwEnum
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/*
* MSACM32 library
*
* Copyright 1998 Patrik Stridvall
*/
#include "windows.h"
#include "winerror.h"
#include "wintypes.h"
#include "debug.h"
#include "driver.h"
#include "heap.h"
#include "mmsystem.h"
#include "msacm.h"
#include "msacmdrv.h"
/**********************************************************************/
HANDLE32 MSACM_hHeap32 = (HANDLE32) NULL;
PWINE_ACMDRIVERID32 MSACM_pFirstACMDriverID32 = NULL;
PWINE_ACMDRIVERID32 MSACM_pLastACMDriverID32 = NULL;
/***********************************************************************
* MSACM_RegisterDriver32()
*/
PWINE_ACMDRIVERID32 MSACM_RegisterDriver32(
LPSTR pszDriverAlias, LPSTR pszFileName,
PWINE_ACMLOCALDRIVER32 pLocalDriver)
{
PWINE_ACMDRIVERID32 padid;
padid = (PWINE_ACMDRIVERID32) HeapAlloc(
MSACM_hHeap32, 0, sizeof(WINE_ACMDRIVERID32)
);
padid->pszDriverAlias =
HEAP_strdupA(MSACM_hHeap32, 0, pszDriverAlias);
padid->pszFileName =
HEAP_strdupA(MSACM_hHeap32, 0, pszFileName);
padid->pACMLocalDriver = pLocalDriver;
padid->bEnabled = TRUE;
padid->pACMDriver = NULL;
padid->pNextACMDriverID = NULL;
padid->pPreviousACMDriverID =
MSACM_pLastACMDriverID32;
MSACM_pLastACMDriverID32 = padid;
if(!MSACM_pFirstACMDriverID32)
MSACM_pFirstACMDriverID32 = padid;
return padid;
}
/***********************************************************************
* MSACM_RegisterAllDrivers32()
*/
void MSACM_RegisterAllDrivers32()
{
PWINE_ACMBUILTINDRIVER32 pbd;
LPSTR pszBuffer;
DWORD dwBufferLength;
/* FIXME
* What if the user edits system.ini while the program is running?
* Does Windows handle that?
*/
if(!MSACM_pFirstACMDriverID32)
return;
/* FIXME: Do not work! How do I determine the section length? */
dwBufferLength =
GetPrivateProfileSection32A("drivers32", NULL, 0, "system.ini");
pszBuffer = (LPSTR) HeapAlloc(
MSACM_hHeap32, 0, dwBufferLength
);
if(GetPrivateProfileSection32A(
"drivers32", pszBuffer, dwBufferLength, "system.ini"))
{
char *s = pszBuffer;
while(*s)
{
if(!lstrncmpi32A("MSACM.", s, 6))
{
char *s2 = s;
while(*s2 != '\0' && *s2 != '=') s2++;
if(*s2)
{
*s2++='\0';
MSACM_RegisterDriver32(s, s2, NULL);
}
}
s += lstrlen32A(s) + 1; /* Either next char or \0 */
}
}
/* FIXME
* Check if any of the builtin driver was added
* when the external drivers was.
*/
pbd = MSACM_BuiltinDrivers32;
while(pbd->pszDriverAlias)
{
PWINE_ACMLOCALDRIVER32 pld;
pld = HeapAlloc(MSACM_hHeap32, 0, sizeof(WINE_ACMLOCALDRIVER32));
pld->pfnDriverProc = pbd->pfnDriverProc;
MSACM_RegisterDriver32(pbd->pszDriverAlias, NULL, pld);
pbd++;
}
HeapFree(MSACM_hHeap32, 0, pszBuffer);
}
/***********************************************************************
* MSACM_UnregisterDriver32()
*/
PWINE_ACMDRIVERID32 MSACM_UnregisterDriver32(PWINE_ACMDRIVERID32 p)
{
PWINE_ACMDRIVERID32 pNextACMDriverID;
if(p->pACMDriver)
acmDriverClose32((HACMDRIVER32) p->pACMDriver, 0);
if(p->pszDriverAlias)
HeapFree(MSACM_hHeap32, 0, p->pszDriverAlias);
if(p->pszFileName)
HeapFree(MSACM_hHeap32, 0, p->pszFileName);
if(p->pACMLocalDriver)
HeapFree(MSACM_hHeap32, 0, p->pACMLocalDriver);
if(p->pPreviousACMDriverID)
p->pPreviousACMDriverID->pNextACMDriverID = p->pNextACMDriverID;
if(p->pNextACMDriverID)
p->pNextACMDriverID->pPreviousACMDriverID = p->pPreviousACMDriverID;
pNextACMDriverID = p->pNextACMDriverID;
HeapFree(MSACM_hHeap32, 0, p);
return pNextACMDriverID;
}
/***********************************************************************
* MSACM_UnregisterAllDrivers32()
* FIXME
* Where should this function be called?
*/
void MSACM_UnregisterAllDrivers32()
{
PWINE_ACMDRIVERID32 p = MSACM_pFirstACMDriverID32;
while(p) p = MSACM_UnregisterDriver32(p);
}
/***********************************************************************
* MSACM_GetDriverID32()
*/
PWINE_ACMDRIVERID32 MSACM_GetDriverID32(HACMDRIVERID32 hDriverID)
{
return (PWINE_ACMDRIVERID32) hDriverID;
}
/***********************************************************************
* MSACM_GetDriver32()
*/
PWINE_ACMDRIVER32 MSACM_GetDriver32(HACMDRIVER32 hDriver)
{
return (PWINE_ACMDRIVER32) hDriver;
}
/***********************************************************************
* MSACM_GetObj32()
*/
PWINE_ACMOBJ32 MSACM_GetObj32(HACMOBJ32 hObj)
{
return (PWINE_ACMOBJ32) hObj;
}
/***********************************************************************
* MSACM_OpenDriverProc32
* FIXME
* This function should be integrated with OpenDriver,
* renamed and moved there.
*/
HDRVR32 MSACM_OpenDriverProc32(DRIVERPROC32 pfnDriverProc)
{
LPDRIVERITEM32A pDrvr;
/* FIXME: This is a very bad solution */
pDrvr = (LPDRIVERITEM32A) HeapAlloc(MSACM_hHeap32, HEAP_ZERO_MEMORY, sizeof(DRIVERITEM32A));
pDrvr->count = 1;
pDrvr->driverproc = pfnDriverProc;
/* FIXME: Send DRV_OPEN among others to DriverProc */
return (HDRVR32) pDrvr;
}
/*
* MSACM32 library
*
* Copyright 1998 Patrik Stridvall
*/
#include "windows.h"
#include "winerror.h"
#include "wintypes.h"
#include "debug.h"
#include "mmsystem.h"
#include "msacm.h"
#include "msacmdrv.h"
#include "winversion.h"
/**********************************************************************/
static DWORD MSACM_dwProcessesAttached32 = 0;
/***********************************************************************
* MSACM_LibMain32 (MSACM32.init)
*/
BOOL32 WINAPI MSACM32_LibMain(
HINSTANCE32 hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
if(MSACM_dwProcessesAttached32 == 0)
{
MSACM_hHeap32 = HeapCreate(0, 0x10000, 0);
MSACM_RegisterAllDrivers32();
}
MSACM_dwProcessesAttached32++;
break;
case DLL_PROCESS_DETACH:
MSACM_dwProcessesAttached32--;
if(MSACM_dwProcessesAttached32 == 0)
{
MSACM_UnregisterAllDrivers32();
HeapDestroy(MSACM_hHeap32);
MSACM_hHeap32 = (HANDLE32) NULL;
}
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
default:
break;
}
return TRUE;
}
/***********************************************************************
* XRegThunkEntry (MSACM32.1)
* FIXME
* No documentation found.
*/
/***********************************************************************
* acmGetVersion32 (MSACM32.34)
*/
DWORD WINAPI acmGetVersion32()
{
switch(VERSION_GetVersion())
{
default:
FIXME(msacm, "%s not supported\n", VERSION_GetVersionName());
case WIN95:
return 0x04000000; /* 4.0.0 */
case NT40:
return 0x04000565; /* 4.0.1381 */
}
}
/***********************************************************************
* acmMessage32 (MSACM32.35)
* FIXME
* No documentation found.
*/
/***********************************************************************
* acmMetrics (MSACM32.36)
*/
MMRESULT32 WINAPI acmMetrics32(
HACMOBJ32 hao, UINT32 uMetric, LPVOID pMetric)
{
PWINE_ACMOBJ32 pao = MSACM_GetObj32(hao);
BOOL32 bLocal = TRUE;
FIXME(msacm, "(0x%08x, %d, %p): stub\n", hao, uMetric, pMetric);
switch(uMetric)
{
case ACM_METRIC_COUNT_DRIVERS:
bLocal = FALSE;
case ACM_METRIC_COUNT_LOCAL_DRIVERS:
if(!pao)
return MMSYSERR_INVALHANDLE;
return MMSYSERR_NOTSUPPORTED;
case ACM_METRIC_COUNT_CODECS:
bLocal = FALSE;
case ACM_METRIC_COUNT_LOCAL_CODECS:
return MMSYSERR_NOTSUPPORTED;
case ACM_METRIC_COUNT_CONVERTERS:
bLocal = FALSE;
case ACM_METRIC_COUNT_LOCAL_CONVERTERS:
return MMSYSERR_NOTSUPPORTED;
case ACM_METRIC_COUNT_FILTERS:
bLocal = FALSE;
case ACM_METRIC_COUNT_LOCAL_FILTERS:
return MMSYSERR_NOTSUPPORTED;
case ACM_METRIC_COUNT_DISABLED:
bLocal = FALSE;
case ACM_METRIC_COUNT_LOCAL_DISABLED:
if(!pao)
return MMSYSERR_INVALHANDLE;
return MMSYSERR_NOTSUPPORTED;
case ACM_METRIC_COUNT_HARDWARE:
case ACM_METRIC_HARDWARE_WAVE_INPUT:
case ACM_METRIC_HARDWARE_WAVE_OUTPUT:
case ACM_METRIC_MAX_SIZE_FORMAT:
case ACM_METRIC_MAX_SIZE_FILTER:
case ACM_METRIC_DRIVER_SUPPORT:
case ACM_METRIC_DRIVER_PRIORITY:
default:
return MMSYSERR_NOTSUPPORTED;
}
return MMSYSERR_NOERROR;
}
/*
* MSACM32 library
*
* Copyright 1998 Patrik Stridvall
*/
#include "windows.h"
#include "winerror.h"
#include "wintypes.h"
#include "debug.h"
#include "mmsystem.h"
#include "msacm.h"
#include "msacmdrv.h"
/***********************************************************************
* acmStreamClose (MSACM32.37)
*/
MMRESULT32 WINAPI acmStreamClose32(
HACMSTREAM32 has, DWORD fdwClose)
{
FIXME(msacm, "(0x%08x, %ld): stub\n", has, fdwClose);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmStreamConvert (MSACM32.38)
*/
MMRESULT32 WINAPI acmStreamConvert32(
HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwConvert)
{
FIXME(msacm, "(0x%08x, %p, %ld): stub\n", has, pash, fdwConvert);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmStreamMessage (MSACM32.39)
*/
MMRESULT32 WINAPI acmStreamMessage32(
HACMSTREAM32 has, UINT32 uMsg, LPARAM lParam1, LPARAM lParam2)
{
FIXME(msacm, "(0x%08x, %u, %ld, %ld): stub\n",
has, uMsg, lParam1, lParam2
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmStreamOpen (MSACM32.40)
*/
MMRESULT32 WINAPI acmStreamOpen32(
PHACMSTREAM32 phas, HACMDRIVER32 had, PWAVEFORMATEX32 pwfxSrc,
PWAVEFORMATEX32 pwfxDst, PWAVEFILTER32 pwfltr, DWORD dwCallback,
DWORD dwInstance, DWORD fdwOpen)
{
FIXME(msacm, "(%p, 0x%08x, %p, %p, %p, %ld, %ld, %ld): stub\n",
phas, had, pwfxSrc, pwfxDst, pwfltr,
dwCallback, dwInstance, fdwOpen
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmStreamPrepareHeader (MSACM32.41)
*/
MMRESULT32 WINAPI acmStreamPrepareHeader32(
HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwPrepare)
{
FIXME(msacm, "(0x%08x, %p, %ld): stub\n", has, pash, fdwPrepare);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmStreamReset (MSACM32.42)
*/
MMRESULT32 WINAPI acmStreamReset32(
HACMSTREAM32 has, DWORD fdwReset)
{
FIXME(msacm, "(0x%08x, %ld): stub\n", has, fdwReset);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmStreamSize (MSACM32.43)
*/
MMRESULT32 WINAPI acmStreamSize32(
HACMSTREAM32 has, DWORD cbInput,
LPDWORD pdwOutputBytes, DWORD fdwSize)
{
FIXME(msacm, "(0x%08x, %ld, %p, %ld): stub\n",
has, cbInput, pdwOutputBytes, fdwSize
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
/***********************************************************************
* acmStreamUnprepareHeader (MSACM32.44)
*/
MMRESULT32 WINAPI acmStreamUnprepareHeader32(
HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwUnprepare)
{
FIXME(msacm, "(0x%08x, %p, %ld): stub\n",
has, pash, fdwUnprepare
);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return MMSYSERR_ERROR;
}
name msacm
type win16
1 stub WEP
2 stub DRIVERPROC
3 stub ___EXPORTEDSTUB
7 pascal acmGetVersion() acmGetVersion16
8 pascal16 acmMetrics(word word ptr) acmMetrics16
10 pascal16 acmDriverEnum(ptr long long) acmDriverEnum16
11 pascal16 acmDriverDetails(word ptr long) acmDriverDetails16
12 pascal16 acmDriverAdd(ptr word long long long) acmDriverAdd16
13 pascal16 acmDriverRemove(word long) acmDriverRemove16
14 pascal16 acmDriverOpen(ptr word long) acmDriverOpen16
15 pascal16 acmDriverClose(word long) acmDriverClose16
16 pascal acmDriverMessage(word word long long) acmDriverMessage16
17 pascal16 acmDriverID(word ptr long) acmDriverID16
18 pascal16 acmDriverPriority(word long long) acmDriverPriority16
30 pascal16 acmFormatTagDetails(word ptr long) acmFormatTagDetails16
31 pascal16 acmFormatTagEnum(word ptr ptr long long) acmFormatTagEnum16
40 pascal16 acmFormatChoose(ptr) acmFormatChoose16
41 pascal16 acmFormatDetails(word ptr long) acmFormatDetails16
42 pascal16 acmFormatEnum(word ptr ptr long long) acmFormatEnum16
45 pascal16 acmFormatSuggest(word ptr ptr long long) acmFormatSuggest16
50 pascal16 acmFilterTagDetails(word ptr long) acmFilterTagDetails16
51 pascal16 acmFilterTagEnum(word ptr ptr long long) acmFilterTagEnum16
60 pascal16 acmFilterChoose(ptr) acmFilterChoose16
61 pascal16 acmFilterDetails(word ptr long) acmFilterDetails16
62 pascal16 acmFilterEnum(word ptr ptr long long) acmFilterEnum16
70 pascal16 acmStreamOpen(ptr word ptr ptr ptr long long long) acmStreamOpen16
71 pascal16 acmStreamClose(word long) acmStreamClose16
72 pascal16 acmStreamSize(word long ptr long) acmStreamSize16
75 pascal16 acmStreamConvert(word ptr long) acmStreamConvert16
76 pascal16 acmStreamReset(word long) acmStreamReset16
77 pascal16 acmStreamPrepareHeader(word ptr long) acmStreamPrepareHeader16
78 pascal16 acmStreamUnprepareHeader(word ptr long) acmStreamUnprepareHeader16
150 stub ACMAPPLICATIONEXIT
175 stub ACMHUGEPAGELOCK
176 stub ACMHUGEPAGEUNLOCK
200 stub ACMOPENCONVERSION
201 stub ACMCLOSECONVERSION
202 stub ACMCONVERT
203 stub ACMCHOOSEFORMAT
/*
* msacm.h - Declarations for MSACM
*/
#ifndef __WINE_MSACM_H
#define __WINE_MSACM_H
#include "wintypes.h"
#include "driver.h"
#include "mmsystem.h"
#include "mmreg.h"
/***********************************************************************
* Types
*/
/* FIXME: Move to wintypes.h */
#define DECLARE_HANDLE(a) \
typedef HANDLE16 a##16; \
typedef HANDLE32 a##32; \
typedef a##16 *P##a##16; \
typedef a##16 *NP##a##16; \
typedef a##16 *LP##a##16; \
typedef a##32 *P##a##32;
DECLARE_HANDLE(HACMDRIVERID);
DECLARE_HANDLE(HACMDRIVER);
DECLARE_HANDLE(HACMSTREAM);
DECLARE_HANDLE(HACMOBJ);
/* FIXME: Remove when define moved to wintypes.h */
#undef DECLARE_HANDLE
/***********************************************************************
* Defines/Enums
*/
#define ACMERR_BASE 512
#define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
#define ACMERR_BUSY (ACMERR_BASE + 1)
#define ACMERR_UNPREPARED (ACMERR_BASE + 2)
#define ACMERR_CANCELED (ACMERR_BASE + 3)
#define MM_ACM_OPEN MM_STREAM_OPEN
#define MM_ACM_CLOSE MM_STREAM_CLOSE
#define MM_ACM_DONE MM_STREAM_DONE
#define ACM_DRIVERADDF_FUNCTION 0x00000003L
#define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L
#define ACM_DRIVERADDF_TYPEMASK 0x00000007L
#define ACM_DRIVERADDF_LOCAL 0x00000000L
#define ACM_DRIVERADDF_GLOBAL 0x00000008L
#define ACMDRIVERDETAILS_SHORTNAME_CHARS 32
#define ACMDRIVERDETAILS_LONGNAME_CHARS 128
#define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80
#define ACMDRIVERDETAILS_LICENSING_CHARS 128
#define ACMDRIVERDETAILS_FEATURES_CHARS 512
#define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
#define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED mmioFOURCC('\0', '\0', '\0', '\0')
#define ACMDRIVERDETAILS_SUPPORTF_CODEC 0x00000001L
#define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
#define ACMDRIVERDETAILS_SUPPORTF_FILTER 0x00000004L
#define ACMDRIVERDETAILS_SUPPORTF_HARDWARE 0x00000008L
#define ACMDRIVERDETAILS_SUPPORTF_ASYNC 0x00000010L
#define ACMDRIVERDETAILS_SUPPORTF_LOCAL 0x40000000L
#define ACMDRIVERDETAILS_SUPPORTF_DISABLED 0x80000000L
#define ACM_DRIVERENUMF_NOLOCAL 0x40000000L
#define ACM_DRIVERENUMF_DISABLED 0x80000000L
#define ACM_DRIVERPRIORITYF_ENABLE 0x00000001L
#define ACM_DRIVERPRIORITYF_DISABLE 0x00000002L
#define ACM_DRIVERPRIORITYF_ABLEMASK 0x00000003L
#define ACM_DRIVERPRIORITYF_BEGIN 0x00010000L
#define ACM_DRIVERPRIORITYF_END 0x00020000L
#define ACM_DRIVERPRIORITYF_DEFERMASK 0x00030000L
#define MM_ACM_FILTERCHOOSE 0x8000
#define FILTERCHOOSE_MESSAGE 0
#define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
#define FILTERCHOOSE_FILTER_VERIFY (FILTERCHOOSE_MESSAGE+1)
#define FILTERCHOOSE_CUSTOM_VERIFY (FILTERCHOOSE_MESSAGE+2)
#define ACMFILTERCHOOSE_STYLEF_SHOWHELP 0x00000004L
#define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
#define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT 0x00000040L
#define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP 0x00000080L
#define ACMFILTERDETAILS_FILTER_CHARS 128
#define ACM_FILTERDETAILSF_INDEX 0x00000000L
#define ACM_FILTERDETAILSF_FILTER 0x00000001L
#define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL
#define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
#define ACM_FILTERTAGDETAILSF_INDEX 0x00000000L
#define ACM_FILTERTAGDETAILSF_FILTERTAG 0x00000001L
#define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
#define ACM_FILTERTAGDETAILSF_QUERYMASK 0x0000000FL
#define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L
#define ACMHELPMSGSTRING32A "acmchoose_help"
#define ACMHELPMSGSTRING32W L"acmchoose_help"
#define ACMHELPMSGSTRING16 "acmchoose_help"
#define ACMHELPMSGCONTEXTMENU32A "acmchoose_contextmenu"
#define ACMHELPMSGCONTEXTMENU32W L"acmchoose_contextmenu"
#define ACMHELPMSGCONTEXTMENU16 "acmchoose_contextmenu"
#define ACMHELPMSGCONTEXTHELP32A "acmchoose_contexthelp"
#define ACMHELPMSGCONTEXTHELP32W L"acmchoose_contexthelp"
#define ACMHELPMSGCONTEXTHELP16 "acmchoose_contexthelp"
#define MM_ACM_FORMATCHOOSE 0x8000
#define FORMATCHOOSE_MESSAGE 0
#define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
#define FORMATCHOOSE_FORMAT_VERIFY (FORMATCHOOSE_MESSAGE+1)
#define FORMATCHOOSE_CUSTOM_VERIFY (FORMATCHOOSE_MESSAGE+2)
#define ACMFORMATCHOOSE_STYLEF_SHOWHELP 0x00000004L
#define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK 0x00000008L
#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE 0x00000010L
#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
#define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT 0x00000040L
#define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP 0x00000080L
#define ACMFORMATDETAILS_FORMAT_CHARS 128
#define ACM_FORMATDETAILSF_INDEX 0x00000000L
#define ACM_FORMATDETAILSF_FORMAT 0x00000001L
#define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL
#define ACM_FORMATENUMF_WFORMATTAG 0x00010000L
#define ACM_FORMATENUMF_NCHANNELS 0x00020000L
#define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
#define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
#define ACM_FORMATENUMF_CONVERT 0x00100000L
#define ACM_FORMATENUMF_SUGGEST 0x00200000L
#define ACM_FORMATENUMF_HARDWARE 0x00400000L
#define ACM_FORMATENUMF_INPUT 0x00800000L
#define ACM_FORMATENUMF_OUTPUT 0x01000000L
#define ACM_FORMATSUGGESTF_WFORMATTAG 0x00010000L
#define ACM_FORMATSUGGESTF_NCHANNELS 0x00020000L
#define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
#define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
#define ACM_FORMATSUGGESTF_TYPEMASK 0x00FF0000L
#define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
#define ACM_FORMATTAGDETAILSF_INDEX 0x00000000L
#define ACM_FORMATTAGDETAILSF_FORMATTAG 0x00000001L
#define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
#define ACM_FORMATTAGDETAILSF_QUERYMASK 0x0000000FL
#define ACM_METRIC_COUNT_DRIVERS 1
#define ACM_METRIC_COUNT_CODECS 2
#define ACM_METRIC_COUNT_CONVERTERS 3
#define ACM_METRIC_COUNT_FILTERS 4
#define ACM_METRIC_COUNT_DISABLED 5
#define ACM_METRIC_COUNT_HARDWARE 6
#define ACM_METRIC_COUNT_LOCAL_DRIVERS 20
#define ACM_METRIC_COUNT_LOCAL_CODECS 21
#define ACM_METRIC_COUNT_LOCAL_CONVERTERS 22
#define ACM_METRIC_COUNT_LOCAL_FILTERS 23
#define ACM_METRIC_COUNT_LOCAL_DISABLED 24
#define ACM_METRIC_HARDWARE_WAVE_INPUT 30
#define ACM_METRIC_HARDWARE_WAVE_OUTPUT 31
#define ACM_METRIC_MAX_SIZE_FORMAT 50
#define ACM_METRIC_MAX_SIZE_FILTER 51
#define ACM_METRIC_DRIVER_SUPPORT 100
#define ACM_METRIC_DRIVER_PRIORITY 101
#define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
#define ACM_STREAMCONVERTF_START 0x00000010
#define ACM_STREAMCONVERTF_END 0x00000020
#define ACMSTREAMHEADER_STATUSF_DONE 0x00010000L
#define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
#define ACMSTREAMHEADER_STATUSF_INQUEUE 0x00100000L
#define ACM_STREAMOPENF_QUERY 0x00000001
#define ACM_STREAMOPENF_ASYNC 0x00000002
#define ACM_STREAMOPENF_NONREALTIME 0x00000004
#define ACM_STREAMSIZEF_SOURCE 0x00000000L
#define ACM_STREAMSIZEF_DESTINATION 0x00000001L
#define ACM_STREAMSIZEF_QUERYMASK 0x0000000FL
#define ACMDM_USER (DRV_USER + 0x0000)
#define ACMDM_RESERVED_LOW (DRV_USER + 0x2000)
#define ACMDM_RESERVED_HIGH (DRV_USER + 0x2FFF)
#define ACMDM_BASE ACMDM_RESERVED_LOW
#define ACMDM_DRIVER_ABOUT (ACMDM_BASE + 11)
/***********************************************************************
* Callbacks
*/
typedef BOOL32 (CALLBACK *ACMDRIVERENUMCB32)(
HACMDRIVERID32 hadid, DWORD dwInstance, DWORD fdwSupport
);
typedef BOOL16 (CALLBACK *ACMDRIVERENUMCB16)(
HACMDRIVERID16 hadid, DWORD dwInstance, DWORD fdwSupport
);
typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC32A)(
HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
);
typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC32W)(
HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
);
typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC16)(
HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
);
typedef UINT32 (CALLBACK *ACMFORMATCHOOSEHOOKPROC32A)(
HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
);
typedef UINT32 (CALLBACK *ACMFORMATCHOOSEHOOKPROC32W)(
HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
);
typedef UINT16 (CALLBACK *ACMFORMATCHOOSEHOOKPROC16)(
HWND16 hwnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam
);
/***********************************************************************
* Structures
*/
typedef struct _ACMDRIVERDETAILS32A
{
DWORD cbStruct;
FOURCC fccType;
FOURCC fccComp;
WORD wMid;
WORD wPid;
DWORD vdwACM;
DWORD vdwDriver;
DWORD fdwSupport;
DWORD cFormatTags;
DWORD cFilterTags;
HICON32 hicon;
CHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
CHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
CHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
CHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
CHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
} ACMDRIVERDETAILS32A, *PACMDRIVERDETAILS32A;
typedef struct _ACMDRIVERDETAILS32W
{
DWORD cbStruct;
FOURCC fccType;
FOURCC fccComp;
WORD wMid;
WORD wPid;
DWORD vdwACM;
DWORD vdwDriver;
DWORD fdwSupport;
DWORD cFormatTags;
DWORD cFilterTags;
HICON32 hicon;
WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
} ACMDRIVERDETAILS32W, *PACMDRIVERDETAILS32W;
typedef struct _ACMDRIVERDETAILS16
{
DWORD cbStruct;
FOURCC fccType;
FOURCC fccComp;
WORD wMid;
WORD wPid;
DWORD vdwACM;
DWORD vdwDriver;
DWORD fdwSupport;
DWORD cFormatTags;
DWORD cFilterTags;
HICON16 hicon;
CHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
CHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
CHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
CHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
CHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
} ACMDRIVERDETAILS16, *NPACMDRIVERDETAILS16, *LPACMDRIVERDETAILS16;
typedef struct _ACMFILTERCHOOSE32A
{
DWORD cbStruct;
DWORD fdwStyle;
HWND32 hwndOwner;
PWAVEFILTER32 pwfltr;
DWORD cbwfltr;
LPCSTR pszTitle;
CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
LPSTR pszName;
DWORD cchName;
DWORD fdwEnum;
PWAVEFILTER32 pwfltrEnum;
HINSTANCE32 hInstance;
LPCSTR pszTemplateName;
LPARAM lCustData;
ACMFILTERCHOOSEHOOKPROC32A pfnHook;
} ACMFILTERCHOOSE32A, *PACMFILTERCHOOSE32A;
typedef struct _ACMFILTERCHOOSE32W
{
DWORD cbStruct;
DWORD fdwStyle;
HWND32 hwndOwner;
PWAVEFILTER32 pwfltr;
DWORD cbwfltr;
LPCWSTR pszTitle;
WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
LPWSTR pszName;
DWORD cchName;
DWORD fdwEnum;
PWAVEFILTER32 pwfltrEnum;
HINSTANCE32 hInstance;
LPCWSTR pszTemplateName;
LPARAM lCustData;
ACMFILTERCHOOSEHOOKPROC32W pfnHook;
} ACMFILTERCHOOSE32W, *PACMFILTERCHOOSE32W;
typedef struct _ACMFILTERCHOOSE16
{
DWORD cbStruct;
DWORD fdwStyle;
HWND16 hwndOwner;
LPWAVEFILTER16 pwfltr;
DWORD cbwfltr;
LPCSTR pszTitle;
char szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
char szFilter[ACMFILTERDETAILS_FILTER_CHARS];
LPSTR pszName;
DWORD cchName;
DWORD fdwEnum;
LPWAVEFILTER16 pwfltrEnum;
HINSTANCE16 hInstance;
LPCSTR pszTemplateName;
LPARAM lCustData;
ACMFILTERCHOOSEHOOKPROC16 pfnHook;
} ACMFILTERCHOOSE16, *NPACMFILTERCHOOSE16, *LPACMFILTERCHOOSE16;
typedef struct _ACMFILTERDETAILS32A
{
DWORD cbStruct;
DWORD dwFilterIndex;
DWORD dwFilterTag;
DWORD fdwSupport;
PWAVEFILTER32 pwfltr;
DWORD cbwfltr;
CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
} ACMFILTERDETAILS32A, *PACMFILTERDETAILS32A;
typedef struct _ACMFILTERDETAILS32W
{
DWORD cbStruct;
DWORD dwFilterIndex;
DWORD dwFilterTag;
DWORD fdwSupport;
PWAVEFILTER32 pwfltr;
DWORD cbwfltr;
WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
} ACMFILTERDETAILS32W, *PACMFILTERDETAILS32W;
typedef struct _ACMFILTERDETAILS16
{
DWORD cbStruct;
DWORD dwFilterIndex;
DWORD dwFilterTag;
DWORD fdwSupport;
LPWAVEFILTER16 pwfltr;
DWORD cbwfltr;
CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS];
} ACMFILTERDETAILS16, *NPACMFILTERDETAILS16, *LPACMFILTERDETAILS16;
typedef struct _ACMFILTERTAGDETAILS32A
{
DWORD cbStruct;
DWORD dwFilterTagIndex;
DWORD dwFilterTag;
DWORD cbFilterSize;
DWORD fdwSupport;
DWORD cStandardFilters;
CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
} ACMFILTERTAGDETAILS32A, *PACMFILTERTAGDETAILS32A;
typedef struct _ACMFILTERTAGDETAILS32W
{
DWORD cbStruct;
DWORD dwFilterTagIndex;
DWORD dwFilterTag;
DWORD cbFilterSize;
DWORD fdwSupport;
DWORD cStandardFilters;
WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
} ACMFILTERTAGDETAILS32W, *PACMFILTERTAGDETAILS32W;
typedef struct _ACMFILTERTAGDETAILS16
{
DWORD cbStruct;
DWORD dwFilterTagIndex;
DWORD dwFilterTag;
DWORD cbFilterSize;
DWORD fdwSupport;
DWORD cStandardFilters;
CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
} ACMFILTERTAGDETAILS16, *NPACMFILTERTAGDETAILS16, *LPACMFILTERTAGDETAILS16;
typedef struct _ACMFORMATCHOOSE32A
{
DWORD cbStruct;
DWORD fdwStyle;
HWND32 hwndOwner;
PWAVEFORMATEX32 pwfx;
DWORD cbwfx;
LPCSTR pszTitle;
CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
LPSTR pszName;
DWORD cchName;
DWORD fdwEnum;
PWAVEFORMATEX32 pwfxEnum;
HINSTANCE32 hInstance;
LPCSTR pszTemplateName;
LPARAM lCustData;
ACMFORMATCHOOSEHOOKPROC32A pfnHook;
} ACMFORMATCHOOSE32A, *PACMFORMATCHOOSE32A;
typedef struct _ACMFORMATCHOOSE32W
{
DWORD cbStruct;
DWORD fdwStyle;
HWND32 hwndOwner;
PWAVEFORMATEX32 pwfx;
DWORD cbwfx;
LPCWSTR pszTitle;
WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
LPWSTR pszName;
DWORD cchName;
DWORD fdwEnum;
LPWAVEFORMATEX pwfxEnum;
HINSTANCE32 hInstance;
LPCWSTR pszTemplateName;
LPARAM lCustData;
ACMFORMATCHOOSEHOOKPROC32W pfnHook;
} ACMFORMATCHOOSE32W, *PACMFORMATCHOOSE32W;
typedef struct _ACMFORMATCHOOSE16
{
DWORD cbStruct;
DWORD fdwStyle;
HWND16 hwndOwner;
LPWAVEFORMATEX16 pwfx;
DWORD cbwfx;
LPCSTR pszTitle;
CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
LPSTR pszName;
DWORD cchName;
DWORD fdwEnum;
LPWAVEFORMATEX16 pwfxEnum;
HINSTANCE16 hInstance;
LPCSTR pszTemplateName;
LPARAM lCustData;
ACMFORMATCHOOSEHOOKPROC16 pfnHook;
} ACMFORMATCHOOSE16, *NPACMFORMATCHOOSE16, *LPACMFORMATCHOOSE16;
typedef struct _ACMFORMATDETAILS32A
{
DWORD cbStruct;
DWORD dwFormatIndex;
DWORD dwFormatTag;
DWORD fdwSupport;
PWAVEFORMATEX32 pwfx;
DWORD cbwfx;
CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
} ACMFORMATDETAILS32A, *PACMFORMATDETAILS32A;
typedef struct _ACMFORMATDETAILS32W
{
DWORD cbStruct;
DWORD dwFormatIndex;
DWORD dwFormatTag;
DWORD fdwSupport;
PWAVEFORMATEX32 pwfx;
DWORD cbwfx;
WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
} ACMFORMATDETAILS32W, *PACMFORMATDETAILS32W;
typedef struct _ACMFORMATDETAILS16
{
DWORD cbStruct;
DWORD dwFormatIndex;
DWORD dwFormatTag;
DWORD fdwSupport;
LPWAVEFORMATEX16 pwfx;
DWORD cbwfx;
CHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
} ACMFORMATDETAILS16, *NPACMFORMATDETAILS16, *LPACMFORMATDETAILS16;
typedef struct _ACMFORMATTAGDETAILS32A
{
DWORD cbStruct;
DWORD dwFormatTagIndex;
DWORD dwFormatTag;
DWORD cbFormatSize;
DWORD fdwSupport;
DWORD cStandardFormats;
CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
} ACMFORMATTAGDETAILS32A, *PACMFORMATTAGDETAILS32A;
typedef struct _ACMFORMATTAGDETAILS32W
{
DWORD cbStruct;
DWORD dwFormatTagIndex;
DWORD dwFormatTag;
DWORD cbFormatSize;
DWORD fdwSupport;
DWORD cStandardFormats;
WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
} ACMFORMATTAGDETAILS32W, *PACMFORMATTAGDETAILS32W;
typedef struct _ACMFORMATTAGDETAILS16
{
DWORD cbStruct;
DWORD dwFormatTagIndex;
DWORD dwFormatTag;
DWORD cbFormatSize;
DWORD fdwSupport;
DWORD cStandardFormats;
CHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
} ACMFORMATTAGDETAILS16, *NPACMFORMATTAGDETAILS16, *LPACMFORMATTAGDETAILS16;
typedef struct _ACMSTREAMHEADER
{
DWORD cbStruct;
DWORD fdwStatus;
DWORD dwUser;
LPBYTE pbSrc;
DWORD cbSrcLength;
DWORD cbSrcLengthUsed;
DWORD dwSrcUser;
LPBYTE pbDst;
DWORD cbDstLength;
DWORD cbDstLengthUsed;
DWORD dwDstUser;
DWORD dwReservedDriver[10];
} ACMSTREAMHEADER16, *NPACMSTREAMHEADER16, *LPACMSTREAMHEADER16,
ACMSTREAMHEADER32, *PACMSTREAMHEADER32;
/***********************************************************************
* Callbacks 2
*/
typedef BOOL32 (CALLBACK *ACMFILTERENUMCB32A)(
HACMDRIVERID32 hadid, PACMFILTERDETAILS32A pafd,
DWORD dwInstance, DWORD fdwSupport
);
typedef BOOL32 (CALLBACK *ACMFILTERENUMCB32W)(
HACMDRIVERID32 hadid, PACMFILTERDETAILS32W pafd,
DWORD dwInstance, DWORD fdwSupport
);
typedef BOOL16 (CALLBACK *ACMFILTERENUMCB16)(
HACMDRIVERID16 hadid, LPACMFILTERDETAILS16 pafd,
DWORD dwInstance, DWORD fdwSupport
);
typedef BOOL32 (CALLBACK *ACMFILTERTAGENUMCB32A)(
HACMDRIVERID32 hadid, PACMFILTERTAGDETAILS32A paftd,
DWORD dwInstance, DWORD fdwSupport
);
typedef BOOL32 (CALLBACK *ACMFILTERTAGENUMCB32W)(
HACMDRIVERID32 hadid, PACMFILTERTAGDETAILS32W paftd,
DWORD dwInstance, DWORD fdwSupport
);
typedef BOOL16 (CALLBACK *ACMFILTERTAGENUMCB16)(
HACMDRIVERID16 hadid, LPACMFILTERTAGDETAILS16 paftd,
DWORD dwInstance, DWORD fdwSupport
);
typedef BOOL32 (CALLBACK *ACMFORMATENUMCB32A)(
HACMDRIVERID32 hadid, PACMFORMATDETAILS32A pafd,
DWORD dwInstance, DWORD fdwSupport
);
typedef BOOL32 (CALLBACK *ACMFORMATENUMCB32W)(
HACMDRIVERID32 hadid, PACMFORMATDETAILS32W pafd,
DWORD dwInstance, DWORD fdwSupport
);
typedef BOOL16 (CALLBACK *ACMFORMATENUMCB16)(
HACMDRIVERID16 hadid, LPACMFORMATDETAILS16 pafd,
DWORD dwInstance, DWORD fdwSupport
);
typedef BOOL32 (CALLBACK *ACMFORMATTAGENUMCB32A)(
HACMDRIVERID32 hadid, PACMFORMATTAGDETAILS32A paftd,
DWORD dwInstance, DWORD fdwSupport
);
typedef BOOL32 (CALLBACK *ACMFORMATTAGENUMCB32W)(
HACMDRIVERID32 hadid, PACMFORMATTAGDETAILS32W paftd,
DWORD dwInstance, DWORD fdwSupport
);
typedef BOOL16 (CALLBACK *ACMFORMATTAGENUMCB16)(
HACMDRIVERID16 hadid, LPACMFORMATTAGDETAILS16 paftd,
DWORD dwInstance, DWORD fdwSupport
);
/***********************************************************************
* Functions - Win16
*/
DWORD WINAPI acmGetVersion16(
);
MMRESULT16 WINAPI acmMetrics16(
HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric
);
MMRESULT16 WINAPI acmDriverEnum16(
ACMDRIVERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT16 WINAPI acmDriverDetails16(
HACMDRIVERID16 hadid, LPACMDRIVERDETAILS16 padd, DWORD fdwDetails
);
MMRESULT16 WINAPI acmDriverAdd16(
LPHACMDRIVERID16 phadid, HINSTANCE16 hinstModule,
LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
);
MMRESULT16 WINAPI acmDriverRemove16(
HACMDRIVERID16 hadid, DWORD fdwRemove
);
MMRESULT16 WINAPI acmDriverOpen16(
LPHACMDRIVER16 phad, HACMDRIVERID16 hadid, DWORD fdwOpen
);
MMRESULT16 WINAPI acmDriverClose16(
HACMDRIVER16 had, DWORD fdwClose
);
LRESULT WINAPI acmDriverMessage16(
HACMDRIVER16 had, UINT16 uMsg, LPARAM lParam1, LPARAM lParam2
);
MMRESULT16 WINAPI acmDriverID16(
HACMOBJ16 hao, LPHACMDRIVERID16 phadid, DWORD fdwDriverID
);
MMRESULT16 WINAPI acmDriverPriority16(
HACMDRIVERID16 hadid, DWORD dwPriority, DWORD fdwPriority
);
MMRESULT16 WINAPI acmFormatTagDetails16(
HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, DWORD fdwDetails
);
MMRESULT16 WINAPI acmFormatTagEnum16(
HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd,
ACMFORMATTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT16 WINAPI acmFormatChoose16(
LPACMFORMATCHOOSE16 pafmtc
);
MMRESULT16 WINAPI acmFormatDetails16(
HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, DWORD fdwDetails
);
MMRESULT16 WINAPI acmFormatEnum16(
HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd,
ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT16 WINAPI acmFormatSuggest16(
HACMDRIVER16 had, LPWAVEFORMATEX16 pwfxSrc,
LPWAVEFORMATEX16 pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest
);
MMRESULT16 WINAPI acmFilterTagDetails16(
HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, DWORD fdwDetails
);
MMRESULT16 WINAPI acmFilterTagEnum16(
HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd,
ACMFILTERTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT16 WINAPI acmFilterChoose16(
LPACMFILTERCHOOSE16 pafltrc
);
MMRESULT16 WINAPI acmFilterDetails16(
HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, DWORD fdwDetails
);
MMRESULT16 WINAPI acmFilterEnum16(
HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd,
ACMFILTERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT16 WINAPI acmStreamOpen16(
LPHACMSTREAM16 phas, HACMDRIVER16 had,
LPWAVEFORMATEX16 pwfxSrc, LPWAVEFORMATEX16 pwfxDst,
LPWAVEFILTER16 pwfltr, DWORD dwCallback,
DWORD dwInstance, DWORD fdwOpen
);
MMRESULT16 WINAPI acmStreamClose16(
HACMSTREAM16 has, DWORD fdwClose
);
MMRESULT16 WINAPI acmStreamSize16(
HACMSTREAM16 has, DWORD cbInput,
LPDWORD pdwOutputBytes, DWORD fdwSize
);
MMRESULT16 WINAPI acmStreamConvert16(
HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwConvert
);
MMRESULT16 WINAPI acmStreamReset16(
HACMSTREAM16 has, DWORD fdwReset
);
MMRESULT16 WINAPI acmStreamPrepareHeader16(
HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwPrepare
);
MMRESULT16 WINAPI acmStreamUnprepareHeader16(
HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwUnprepare
);
/***********************************************************************
* Functions - Win32
*/
MMRESULT32 WINAPI acmDriverAdd32A(
PHACMDRIVERID32 phadid, HINSTANCE32 hinstModule,
LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
);
MMRESULT32 WINAPI acmDriverAdd32W(
PHACMDRIVERID32 phadid, HINSTANCE32 hinstModule,
LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
);
MMRESULT32 WINAPI acmDriverClose32(
HACMDRIVER32 had, DWORD fdwClose
);
MMRESULT32 WINAPI acmDriverDetails32A(
HACMDRIVERID32 hadid, PACMDRIVERDETAILS32A padd, DWORD fdwDetails
);
MMRESULT32 WINAPI acmDriverDetails32W(
HACMDRIVERID32 hadid, PACMDRIVERDETAILS32W padd, DWORD fdwDetails
);
MMRESULT32 WINAPI acmDriverEnum32(
ACMDRIVERENUMCB32 fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT32 WINAPI acmDriverID32(
HACMOBJ32 hao, PHACMDRIVERID32 phadid, DWORD fdwDriverID
);
LRESULT WINAPI acmDriverMessage32(
HACMDRIVER32 had, UINT32 uMsg, LPARAM lParam1, LPARAM lParam2
);
MMRESULT32 WINAPI acmDriverOpen32(
PHACMDRIVER32 phad, HACMDRIVERID32 hadid, DWORD fdwOpen
);
MMRESULT32 WINAPI acmDriverPriority32(
HACMDRIVERID32 hadid, DWORD dwPriority, DWORD fdwPriority
);
MMRESULT32 WINAPI acmDriverRemove32(
HACMDRIVERID32 hadid, DWORD fdwRemove
);
MMRESULT32 WINAPI acmFilterChoose32A(
PACMFILTERCHOOSE32A pafltrc
);
MMRESULT32 WINAPI acmFilterChoose32W(
PACMFILTERCHOOSE32W pafltrc
);
MMRESULT32 WINAPI acmFilterDetails32A(
HACMDRIVER32 had, PACMFILTERDETAILS32A pafd, DWORD fdwDetails
);
MMRESULT32 WINAPI acmFilterDetails32W(
HACMDRIVER32 had, PACMFILTERDETAILS32W pafd, DWORD fdwDetails
);
MMRESULT32 WINAPI acmFilterEnum32A(
HACMDRIVER32 had, PACMFILTERDETAILS32A pafd,
ACMFILTERENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT32 WINAPI acmFilterEnum32W(
HACMDRIVER32 had, PACMFILTERDETAILS32W pafd,
ACMFILTERENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT32 WINAPI acmFilterTagDetails32A(
HACMDRIVER32 had, PACMFILTERTAGDETAILS32A paftd, DWORD fdwDetails
);
MMRESULT32 WINAPI acmFilterTagDetails32W(
HACMDRIVER32 had, PACMFILTERTAGDETAILS32W paftd, DWORD fdwDetails
);
MMRESULT32 WINAPI acmFilterTagEnum32A(
HACMDRIVER32 had, PACMFILTERTAGDETAILS32A paftd,
ACMFILTERTAGENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT32 WINAPI acmFilterTagEnum32W(
HACMDRIVER32 had, PACMFILTERTAGDETAILS32W paftd,
ACMFILTERTAGENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT32 WINAPI acmFormatChoose32A(
PACMFORMATCHOOSE32A pafmtc
);
MMRESULT32 WINAPI acmFormatChoose32W(
PACMFORMATCHOOSE32W pafmtc
);
MMRESULT32 WINAPI acmFormatDetails32A(
HACMDRIVER32 had, PACMFORMATDETAILS32A pafd, DWORD fdwDetails
);
MMRESULT32 WINAPI acmFormatDetails32W(
HACMDRIVER32 had, PACMFORMATDETAILS32W pafd, DWORD fdwDetails
);
MMRESULT32 WINAPI acmFormatEnum32A(
HACMDRIVER32 had, PACMFORMATDETAILS32A pafd,
ACMFORMATENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT32 WINAPI acmFormatEnum32W(
HACMDRIVER32 had, PACMFORMATDETAILS32W pafd,
ACMFORMATENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT32 WINAPI acmFormatSuggest32(
HACMDRIVER32 had, PWAVEFORMATEX32 pwfxSrc, PWAVEFORMATEX32 pwfxDst,
DWORD cbwfxDst, DWORD fdwSuggest
);
MMRESULT32 WINAPI acmFormatTagDetails32A(
HACMDRIVER32 had, PACMFORMATTAGDETAILS32A paftd, DWORD fdwDetails
);
MMRESULT32 WINAPI acmFormatTagDetails32W(
HACMDRIVER32 had, PACMFORMATTAGDETAILS32W paftd, DWORD fdwDetails
);
MMRESULT32 WINAPI acmFormatTagEnum32A(
HACMDRIVER32 had, PACMFORMATTAGDETAILS32A paftd,
ACMFORMATTAGENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
);
MMRESULT32 WINAPI acmFormatTagEnum32W(
HACMDRIVER32 had, PACMFORMATTAGDETAILS32W paftd,
ACMFORMATTAGENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
);
DWORD WINAPI acmGetVersion32(
);
MMRESULT32 WINAPI acmMetrics32(
HACMOBJ32 hao, UINT32 uMetric, LPVOID pMetric
);
MMRESULT32 WINAPI acmStreamClose32(
HACMSTREAM32 has, DWORD fdwClose
);
MMRESULT32 WINAPI acmStreamConvert32(
HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwConvert
);
MMRESULT32 WINAPI acmStreamMessage32(
HACMSTREAM32 has, UINT32 uMsg, LPARAM lParam1, LPARAM lParam2
);
MMRESULT32 WINAPI acmStreamOpen32(
PHACMSTREAM32 phas, HACMDRIVER32 had, PWAVEFORMATEX32 pwfxSrc,
PWAVEFORMATEX32 pwfxDst, PWAVEFILTER32 pwfltr, DWORD dwCallback,
DWORD dwInstance, DWORD fdwOpen
);
MMRESULT32 WINAPI acmStreamPrepareHeader32(
HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwPrepare
);
MMRESULT32 WINAPI acmStreamReset32(
HACMSTREAM32 has, DWORD fdwReset
);
MMRESULT32 WINAPI acmStreamSize32(
HACMSTREAM32 has, DWORD cbInput,
LPDWORD pdwOutputBytes, DWORD fdwSize
);
MMRESULT32 WINAPI acmStreamUnprepareHeader32(
HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwUnprepare
);
/***********************************************************************
* Wine specific - Win32
*/
typedef struct _WINE_ACMBUILTINDRIVER32
{
LPSTR pszDriverAlias;
DRIVERPROC32 pfnDriverProc;
} WINE_ACMBUILTINDRIVER32, *PWINE_ACMBUILTINDRIVER32;
typedef struct _WINE_ACMLOCALDRIVER32
{
DRIVERPROC32 pfnDriverProc;
} WINE_ACMLOCALDRIVER32, *PWINE_ACMLOCALDRIVER32;
typedef struct _WINE_ACMDRIVERID32 *PWINE_ACMDRIVERID32;
typedef struct _WINE_ACMOBJ32
{
PWINE_ACMDRIVERID32 pACMDriverID;
} WINE_ACMOBJ32, *PWINE_ACMOBJ32;
typedef struct _WINE_ACMDRIVER32
{
WINE_ACMOBJ32 obj;
HDRVR32 hDrvr;
} WINE_ACMDRIVER32, *PWINE_ACMDRIVER32;
typedef struct _WINE_ACMSTREAM32
{
WINE_ACMOBJ32 obj;
/* FIME: More fields needed */
} WINE_ACMSTREAM32, *PWINE_ACMSTREAM32;
typedef struct _WINE_ACMDRIVERID32
{
LPSTR pszDriverAlias;
LPSTR pszFileName;
PWINE_ACMLOCALDRIVER32 pACMLocalDriver;
BOOL32 bEnabled;
PWINE_ACMDRIVER32 pACMDriver; /* NULL if not open */
PWINE_ACMDRIVERID32 pNextACMDriverID;
PWINE_ACMDRIVERID32 pPreviousACMDriverID;
} WINE_ACMDRIVERID32;
/* From builtin.c */
extern WINE_ACMBUILTINDRIVER32 MSACM_BuiltinDrivers32[];
/* From interal.c */
extern HANDLE32 MSACM_hHeap32;
extern PWINE_ACMDRIVERID32 MSACM_pFirstACMDriverID32;
extern PWINE_ACMDRIVERID32 MSACM_pLastACMDriverID32;
PWINE_ACMDRIVERID32 MSACM_RegisterDriver32(
LPSTR pszDriverAlias, LPSTR pszFileName,
PWINE_ACMLOCALDRIVER32 pLocalDriver);
void MSACM_RegisterAllDrivers32();
PWINE_ACMDRIVERID32 MSACM_UnregisterDriver32(PWINE_ACMDRIVERID32 p);
void MSACM_UnregisterAllDrivers32();
PWINE_ACMDRIVERID32 MSACM_GetDriverID32(HACMDRIVERID32 hDriverID);
PWINE_ACMDRIVER32 MSACM_GetDriver32(HACMDRIVER32 hDriver);
PWINE_ACMOBJ32 MSACM_GetObj32(HACMOBJ32 hObj);
HDRVR32 MSACM_OpenDriverProc32(DRIVERPROC32 pfnDriverProc);
#endif /* __WINE_MSACM_H */
/*
* msacmdrv.h - Declarations for MSACM driver
*/
#ifndef __WINE_MSACMDRV_H
#define __WINE_MSACMDRV_H
#include "wintypes.h"
#include "msacm.h"
/***********************************************************************
* Types
*/
/***********************************************************************
* Defines/Enums
*/
#define MAKE_ACM_VERSION(mjr, mnr, bld) \
(((long)(mjr)<<24) | ((long)(mnr)<<16) | ((long)bld))
#define ACMDRVOPENDESC_SECTIONNAME_CHARS
#define ACMDM_DRIVER_NOTIFY (ACMDM_BASE + 1)
#define ACMDM_DRIVER_DETAILS (ACMDM_BASE + 10)
#define ACMDM_HARDWARE_WAVE_CAPS_INPUT (ACMDM_BASE + 20)
#define ACMDM_HARDWARE_WAVE_CAPS_OUTPUT (ACMDM_BASE + 21)
#define ACMDM_FORMATTAG_DETAILS (ACMDM_BASE + 25)
#define ACMDM_FORMAT_DETAILS (ACMDM_BASE + 26)
#define ACMDM_FORMAT_SUGGEST (ACMDM_BASE + 27)
#define ACMDM_FILTERTAG_DETAILS (ACMDM_BASE + 50)
#define ACMDM_FILTER_DETAILS (ACMDM_BASE + 51)
#define ACMDM_STREAM_OPEN (ACMDM_BASE + 76)
#define ACMDM_STREAM_CLOSE (ACMDM_BASE + 77)
#define ACMDM_STREAM_SIZE (ACMDM_BASE + 78)
#define ACMDM_STREAM_CONVERT (ACMDM_BASE + 79)
#define ACMDM_STREAM_RESET (ACMDM_BASE + 80)
#define ACMDM_STREAM_PREPARE (ACMDM_BASE + 81)
#define ACMDM_STREAM_UNPREPARE (ACMDM_BASE + 82)
#define ACMDM_STREAM_UPDATE (ACMDM_BASE + 83)
/***********************************************************************
* Structures
*/
typedef struct _ACMDRVOPENDESC32A
{
DWORD cbStruct;
FOURCC fccType;
FOURCC fccComp;
DWORD dwVersion;
DWORD dwFlags;
DWORD dwError;
LPCSTR pszSectionName;
LPCSTR pszAliasName;
DWORD dnDevNode;
} ACMDRVOPENDESC32A, *PACMDRVOPENDESC32A;
typedef struct _ACMDRVOPENDESC32W
{
DWORD cbStruct;
FOURCC fccType;
FOURCC fccComp;
DWORD dwVersion;
DWORD dwFlags;
DWORD dwError;
LPCWSTR pszSectionName;
LPCWSTR pszAliasName;
DWORD dnDevNode;
} ACMDRVOPENDESC32W, *PACMDRVOPENDESC32W;
typedef struct _ACMDRVOPENDESC16
{
DWORD cbStruct;
FOURCC fccType;
FOURCC fccComp;
DWORD dwVersion;
DWORD dwFlags;
DWORD dwError;
LPCSTR pszSectionName;
LPCSTR pszAliasName;
DWORD dnDevNode;
} ACMDRVOPENDESC16, *NPACMDRVOPENDESC16, *LPACMDRVOPENDESC16;
typedef struct _ACMDRVSTREAMINSTANCE16
{
DWORD cbStruct;
LPWAVEFORMATEX16 pwfxSrc;
LPWAVEFORMATEX16 pwfxDst;
LPWAVEFILTER16 pwfltr;
DWORD dwCallback;
DWORD dwInstance;
DWORD fdwOpen;
DWORD fdwDriver;
DWORD dwDriver;
HACMSTREAM16 has;
} ACMDRVSTREAMINSTANCE16, *NPACMDRVSTREAMINSTANCE16, *LPACMDRVSTREAMINSTANCE16;
typedef struct _ACMDRVSTREAMINSTANCE32
{
DWORD cbStruct;
PWAVEFORMATEX32 pwfxSrc;
PWAVEFORMATEX32 pwfxDst;
PWAVEFILTER32 pwfltr;
DWORD dwCallback;
DWORD dwInstance;
DWORD fdwOpen;
DWORD fdwDriver;
DWORD dwDriver;
HACMSTREAM32 has;
} ACMDRVSTREAMINSTANCE32, *PACMDRVSTREAMINSTANCE32;
typedef struct _ACMDRVSTREAMHEADER16 *LPACMDRVSTREAMHEADER16;
typedef struct _ACMDRVSTREAMHEADER16 {
DWORD cbStruct;
DWORD fdwStatus;
DWORD dwUser;
LPBYTE pbSrc;
DWORD cbSrcLength;
DWORD cbSrcLengthUsed;
DWORD dwSrcUser;
LPBYTE pbDst;
DWORD cbDstLength;
DWORD cbDstLengthUsed;
DWORD dwDstUser;
DWORD fdwConvert;
LPACMDRVSTREAMHEADER16 *padshNext;
DWORD fdwDriver;
DWORD dwDriver;
/* Internal fields for ACM */
DWORD fdwPrepared;
DWORD dwPrepared;
LPBYTE pbPreparedSrc;
DWORD cbPreparedSrcLength;
LPBYTE pbPreparedDst;
DWORD cbPreparedDstLength;
} ACMDRVSTREAMHEADER16, *NPACMDRVSTREAMHEADER16;
typedef struct _ACMDRVSTREAMHEADER32 *PACMDRVSTREAMHEADER32;
typedef struct _ACMDRVSTREAMHEADER32 {
DWORD cbStruct;
DWORD fdwStatus;
DWORD dwUser;
LPBYTE pbSrc;
DWORD cbSrcLength;
DWORD cbSrcLengthUsed;
DWORD dwSrcUser;
LPBYTE pbDst;
DWORD cbDstLength;
DWORD cbDstLengthUsed;
DWORD dwDstUser;
DWORD fdwConvert;
PACMDRVSTREAMHEADER32 *padshNext;
DWORD fdwDriver;
DWORD dwDriver;
/* Internal fields for ACM */
DWORD fdwPrepared;
DWORD dwPrepared;
LPBYTE pbPreparedSrc;
DWORD cbPreparedSrcLength;
LPBYTE pbPreparedDst;
DWORD cbPreparedDstLength;
} ACMDRVSTREAMHEADER32;
typedef struct _ACMDRVSTREAMSIZE
{
DWORD cbStruct;
DWORD fdwSize;
DWORD cbSrcLength;
DWORD cbDstLength;
} ACMDRVSTREAMSIZE16, *NPACMDRVSTREAMSIZE16, *LPACMDRVSTREAMSIZE16,
ACMDRVSTREAMSIZE32, *PACMDRVSTREAMSIZE;
typedef struct _ACMDRVFORMATSUGGEST16
{
DWORD cbStruct;
DWORD fdwSuggest;
LPWAVEFORMATEX16 pwfxSrc;
DWORD cbwfxSrc;
LPWAVEFORMATEX16 pwfxDst;
DWORD cbwfxDst;
} ACMDRVFORMATSUGGEST16, *NPACMDRVFORMATSUGGEST, *LPACMDRVFORMATSUGGEST;
typedef struct _ACMDRVFORMATSUGGEST32
{
DWORD cbStruct;
DWORD fdwSuggest;
PWAVEFORMATEX32 pwfxSrc;
DWORD cbwfxSrc;
PWAVEFORMATEX32 pwfxDst;
DWORD cbwfxDst;
} ACMDRVFORMATSUGGEST32, *PACMDRVFORMATSUGGEST32;
#endif /* __WINE_MSACMDRV_H */
name msacm32
type win32
init MSACM32_LibMain
1 stub XRegThunkEntry
2 stdcall acmDriverAddA(ptr long long long long) acmDriverAdd32A
3 stdcall acmDriverAddW(ptr long long long long) acmDriverAdd32W
4 stdcall acmDriverClose(long long) acmDriverClose32
5 stdcall acmDriverDetailsA(long ptr long) acmDriverDetails32A
6 stdcall acmDriverDetailsW(long ptr long) acmDriverDetails32W
7 stdcall acmDriverEnum(ptr long long) acmDriverEnum32
8 stdcall acmDriverID(long ptr long) acmDriverID32
9 stdcall acmDriverMessage(long long long long) acmDriverMessage32
10 stdcall acmDriverOpen(ptr long long) acmDriverOpen32
11 stdcall acmDriverPriority(long long long) acmDriverPriority32
12 stdcall acmDriverRemove(long long) acmDriverRemove32
13 stdcall acmFilterChooseA(ptr) acmFilterChoose32A
14 stdcall acmFilterChooseW(ptr) acmFilterChoose32W
15 stdcall acmFilterDetailsA(long ptr long) acmFilterDetails32A
16 stdcall acmFilterDetailsW(long ptr long) acmFilterDetails32W
17 stdcall acmFilterEnumA(long ptr ptr long long) acmFilterEnum32A
18 stdcall acmFilterEnumW(long ptr ptr long long) acmFilterEnum32W
19 stdcall acmFilterTagDetailsA(long ptr long) acmFilterTagDetails32A
20 stdcall acmFilterTagDetailsW(long ptr long) acmFilterTagDetails32W
21 stdcall acmFilterTagEnumA(long ptr ptr long long) acmFilterTagEnum32A
22 stdcall acmFilterTagEnumW(long ptr ptr long long) acmFilterTagEnum32W
23 stdcall acmFormatChooseA(ptr) acmFormatChoose32A
24 stdcall acmFormatChooseW(ptr) acmFormatChoose32W
25 stdcall acmFormatDetailsA(long ptr long) acmFormatDetails32A
26 stdcall acmFormatDetailsW(long ptr long) acmFormatDetails32W
27 stdcall acmFormatEnumA(long ptr ptr long long) acmFormatEnum32A
28 stdcall acmFormatEnumW(long ptr ptr long long) acmFormatEnum32W
29 stdcall acmFormatSuggest(long ptr ptr long long) acmFormatSuggest32
30 stdcall acmFormatTagDetailsA(long ptr long) acmFormatTagDetails32A
31 stdcall acmFormatTagDetailsW(long ptr long) acmFormatTagDetails32W
32 stdcall acmFormatTagEnumA(long ptr ptr long long) acmFormatTagEnum32A
33 stdcall acmFormatTagEnumW(long ptr ptr long long) acmFormatTagEnum32W
34 stdcall acmGetVersion() acmGetVersion32
35 stub acmMessage32
36 stdcall acmMetrics(long long ptr) acmMetrics32
37 stdcall acmStreamClose(long long) acmStreamClose32
38 stdcall acmStreamConvert(long ptr long) acmStreamConvert32
39 stdcall acmStreamMessage(long long long long) acmStreamMessage32
40 stdcall acmStreamOpen(ptr long ptr ptr ptr long long long) acmStreamOpen32
41 stdcall acmStreamPrepareHeader(long ptr long) acmStreamPrepareHeader32
42 stdcall acmStreamReset(long long) acmStreamReset32
43 stdcall acmStreamSize(long long ptr long) acmStreamSize32
43 stdcall acmStreamUnprepareHeader(long ptr long) acmStreamUnprepareHeader32
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment