Started the implementation of MSACM.DLL and MSACM32.DLL.
This commit is contained in:
parent
686db71fd5
commit
29c08dd4df
|
@ -0,0 +1 @@
|
|||
Makefile
|
|
@ -0,0 +1,16 @@
|
|||
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:
|
||||
|
|
@ -0,0 +1,411 @@
|
|||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
Makefile
|
|
@ -0,0 +1,22 @@
|
|||
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:
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
/*
|
||||
* 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;
|
||||
}
|
||||
|
|
@ -0,0 +1,349 @@
|
|||
/*
|
||||
* 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;
|
||||
}
|
||||
|
|
@ -0,0 +1,155 @@
|
|||
/*
|
||||
* 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;
|
||||
}
|
|
@ -0,0 +1,168 @@
|
|||
/*
|
||||
* 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;
|
||||
}
|
|
@ -0,0 +1,196 @@
|
|||
/*
|
||||
* 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;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
/*
|
||||
* 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;
|
||||
}
|
|
@ -0,0 +1,114 @@
|
|||
/*
|
||||
* 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;
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
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
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,203 @@
|
|||
/*
|
||||
* 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 */
|
|
@ -0,0 +1,48 @@
|
|||
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
|
Loading…
Reference in New Issue