99 if (pGetModuleHandle16 && pLoadLibrary16 &&
100 (pGetModuleHandle16(
"MMSYSTEM.DLL") || pLoadLibrary16(
"MMSYSTEM.DLL")))
112#define ERR_TO_STR(dev) case dev: return #dev
214 WARN(
"Unknown callback type %d\n",
HIWORD(fdwOpen));
231 switch (
dwFlags & 0xF0000000ul) {
266 WARN(
"Unsupported flag (%08lx)\n",
dwFlags & 0xF0000000ul);
306 memcpy(lpCaps, &micA,
min(uSize,
sizeof(micA)));
347 TRACE(
"(%p, %d, %08lx, %08lx, %08x)\n",
348 lphMix, uDeviceID, dwCallback, dwInstance, fdwOpen);
356 mod.dwInstance = dwCallback;
367 &dwCallback, &dwInstance);
377 if (lphMix) *lphMix = hMix;
378 TRACE(
"=> %d hMixer=%p\n", dwRet, hMix);
391 TRACE(
"(%p)\n", hMix);
409 TRACE(
"(%p %p %08x)\n", hmix, lpid, fdwID);
429 TRACE(
"(%p, %p, %08x)\n", hmix, lpmcdW, fdwDetails);
434 if (lpmcdW ==
NULL || lpmcdW->
cbStruct !=
sizeof(*lpmcdW))
449 TRACE(
"(%p, %p, %08x)\n", hmix, lpmcdA, fdwDetails);
451 if (lpmcdA ==
NULL || lpmcdA->
cbStruct !=
sizeof(*lpmcdA))
494 ERR(
"Unsupported fdwDetails=0x%08x\n", fdwDetails);
510 TRACE(
"(%p, %p, %08x)\n", hmix, lpmlcA, fdwControls);
512 if (lpmlcA ==
NULL || lpmlcA->
cbStruct !=
sizeof(*lpmlcA) ||
577 TRACE(
"(%p, %p, %08x)\n", hmix, lpmlcW, fdwControls);
582 if (lpmlcW ==
NULL || lpmlcW->
cbStruct !=
sizeof(*lpmlcW))
597 TRACE(
"(%p, %p, %08x)\n", hmix, lpmliW, fdwInfo);
599 if (lpmliW ==
NULL || lpmliW->
cbStruct !=
sizeof(*lpmliW))
618 TRACE(
"(%p, %p, %08x)\n", hmix, lpmliA, fdwInfo);
620 if (lpmliA ==
NULL || lpmliA->
cbStruct !=
sizeof(*lpmliA))
642 mliW.
Target.vDriverVersion = lpmliA->
Target.vDriverVersion;
646 WARN(
"Unsupported fdwControls=0x%08x\n", fdwInfo);
671 lpmliA->
Target.vDriverVersion = mliW.
Target.vDriverVersion;
687 TRACE(
"(%p, %p, %08x)\n", hmix, lpmcd, fdwDetails);
703 TRACE(
"(%p, %d, %08lx, %08lx): semi-stub?\n",
704 hmix, uMsg, dwParam1, dwParam2);
727 TRACE(
"(%04lX, %p, %d) !\n", uDeviceID, lpCaps, uSize);
757 memcpy(lpCaps, &acA,
min(uSize,
sizeof(acA)));
769 TRACE(
"(%04X, %p) !\n", uDeviceID, lpdwVolume);
783 TRACE(
"(%04X, %u) !\n", uDeviceID, dwVolume);
819 TRACE(
"(%lu, %p, %u);\n", uDeviceID, lpCaps, uSize);
854 memcpy(lpCaps, &mocA,
min(uSize,
sizeof(mocA)));
920 lpdwCallback, lpdwInstance);
922 *lphMidiOut = hMidiOut;
946 TRACE(
"(%p, %d, %08lX, %08lX, %08X);\n",
947 lphMidiOut, uDeviceID, dwCallback, dwInstance,
dwFlags);
949 if (lphMidiOut !=
NULL) *lphMidiOut = 0;
969 if (lphMidiOut) *lphMidiOut = hMidiOut;
970 TRACE(
"=> %d hMidi=%p\n", dwRet, hMidiOut);
983 TRACE(
"(%p)\n", hMidiOut);
1002 TRACE(
"(%p, %p, %d)\n", hMidiOut, lpMidiOutHdr, uSize);
1004 if (lpMidiOutHdr ==
NULL || uSize <
sizeof (
MIDIHDR))
1021 TRACE(
"(%p, %p, %d)\n", hMidiOut, lpMidiOutHdr, uSize);
1023 if (lpMidiOutHdr ==
NULL || uSize <
sizeof (
MIDIHDR))
1043 TRACE(
"(%p, %08X)\n", hMidiOut, dwMsg);
1059 TRACE(
"(%p, %p, %d)\n", hMidiOut, lpMidiOutHdr, uSize);
1074 TRACE(
"(%p)\n", hMidiOut);
1089 TRACE(
"(%p, %p);\n", hMidiOut, lpdwVolume);
1104 TRACE(
"(%p, %d);\n", hMidiOut, dwVolume);
1119 FIXME(
"not supported yet\n");
1129 FIXME(
"not supported yet\n");
1140 TRACE(
"(%p, %p)\n", hMidiOut, lpuDeviceID);
1158 TRACE(
"(%p, %04X, %08lX, %08lX)\n", hMidiOut, uMessage, dwParam1, dwParam2);
1162 if (uMessage == 0x0001) {
1175 FIXME(
"can't handle OPEN or CLOSE message!\n");
1196 TRACE(
"(%ld, %p, %d);\n", uDeviceID, lpCaps, uSize);
1226 memcpy(lpCaps, &micA,
min(uSize,
sizeof(micA)));
1241 TRACE(
"(%p, %d, %08lX, %08lX, %08X);\n",
1242 lphMidiIn, uDeviceID, dwCallback, dwInstance,
dwFlags);
1244 if (lphMidiIn !=
NULL) *lphMidiIn = 0;
1251 &
dwFlags, &dwCallback, &dwInstance);
1267 if (lphMidiIn !=
NULL) *lphMidiIn = hMidiIn;
1268 TRACE(
"=> %d hMidi=%p\n", dwRet, hMidiIn);
1281 TRACE(
"(%p)\n", hMidiIn);
1299 TRACE(
"(%p, %p, %d)\n", hMidiIn, lpMidiInHdr, uSize);
1301 if (lpMidiInHdr ==
NULL || uSize <
sizeof (
MIDIHDR))
1318 TRACE(
"(%p, %p, %d)\n", hMidiIn, lpMidiInHdr, uSize);
1320 if (lpMidiInHdr ==
NULL || uSize <
sizeof (
MIDIHDR))
1341 TRACE(
"(%p, %p, %d)\n", hMidiIn, lpMidiInHdr, uSize);
1356 TRACE(
"(%p)\n", hMidiIn);
1371 TRACE(
"(%p)\n", hMidiIn);
1386 TRACE(
"(%p)\n", hMidiIn);
1401 TRACE(
"(%p, %p)\n", hMidiIn, lpuDeviceID);
1421 TRACE(
"(%p, %04X, %08lX, %08lX)\n", hMidiIn, uMessage, dwParam1, dwParam2);
1429 FIXME(
"can't handle OPEN or CLOSE message!\n");
1440 FIXME(
"(%p, %p, %p): Stub\n", hMidi, hmo, pReserved);
1449 FIXME(
"(%p, %p, %p): Stub\n", hMidi, hmo, pReserved);
1467#define WINE_MSM_HEADER (WM_USER+0)
1468#define WINE_MSM_STOP (WM_USER+1)
1486 return *lpMidiStrm !=
NULL;
1497 FIXME(
"Shouldn't happen. lpMidiStrm->dwTimeDiv = 0\n");
1498 }
else if (lpMidiStrm->
dwTimeDiv > 0x8000) {
1501 ret = (pulse * 1000) / (nf * nsf);
1519 switch (
msg->message) {
1528 for (lpMidiHdr = lpMidiStrm->
lpMidiHdr; lpMidiHdr; lpMidiHdr = lpMidiHdr->
lpNext) {
1530 lpMidiHdr->
dwFlags &= ~MHDR_INQUEUE;
1573 TRACE(
"Adding %s lpMidiHdr=%p [lpData=0x%p dwBufferLength=%u/%u dwFlags=0x%08x size=%lu]\n",
1582 for (dwToGo = 0; dwToGo < lpMidiHdr->
dwBufferLength; dwToGo += 16) {
1587 printf(
"%02x ", lpData[dwToGo +
i]);
1591 ch = lpData[dwToGo +
i];
1592 printf(
"%c", (ch >= 0x20 && ch <= 0x7F) ? ch :
'.');
1597 if (((LPMIDIEVENT)lpData)->dwStreamID != 0 &&
1598 ((LPMIDIEVENT)lpData)->dwStreamID != 0xFFFFFFFF &&
1600 ((LPMIDIEVENT)lpData)->dwStreamID != (
DWORD_PTR)lpMidiStrm) {
1601 FIXME(
"Dropping bad %s lpMidiHdr (streamID=%08x)\n",
1603 ((LPMIDIEVENT)lpData)->dwStreamID);
1605 lpMidiHdr->
dwFlags &= ~MHDR_INQUEUE;
1613 for (lpmh = &lpMidiStrm->lpMidiHdr; *lpmh; lpmh = &(*lpmh)->
lpNext);
1623 FIXME(
"Unknown message %d\n",
msg->message);
1643 TRACE(
"(%p)!\n", lpMidiStrm);
1656 TRACE(
"Ready to go 1\n");
1659 TRACE(
"Ready to go 2\n");
1682 me = (LPMIDIEVENT)(lpData + lpMidiHdr->
dwOffset);
1685 if (me->dwDeltaTime) {
1687 lpMidiStrm->
dwPulses += me->dwDeltaTime;
1708 FIXME(
"NIY: MEVT_COMMENT\n");
1712 FIXME(
"NIY: MEVT_LONGMSG, aka sending Sysex event\n");
1739 lpMidiHdr->
dwFlags &= ~MHDR_INQUEUE;
1749 TRACE(
"End of thread\n");
1766 WARN(
"bad PostThreadMessageA\n");
1779 TRACE(
"(%p)!\n", hMidiStrm);
1805 TRACE(
"(%p, %p, %d, 0x%08lx, 0x%08lx, 0x%08x)!\n",
1806 lphMidiStrm, lpuDeviceID, cMidi, dwCallback, dwInstance, fdwOpen);
1808 if (cMidi != 1 || lphMidiStrm ==
NULL || lpuDeviceID ==
NULL)
1826 lpwm =
MIDI_OutAlloc(&hMidiOut, &dwCallback, &dwInstance, &fdwOpen, 1, &mosm);
1827 lpMidiStrm->
hDevice = hMidiOut;
1828 *lphMidiStrm = (HMIDISTRM)hMidiOut;
1858 TRACE(
"=> (%u/%d) hMidi=%p ret=%d lpMidiStrm=%p\n",
1872 TRACE(
"(%p, %p, %u)!\n", hMidiStrm, lpMidiHdr, cbMidiHdr);
1894 WARN(
"bad PostThreadMessageA\n");
1909 TRACE(
"(%p)!\n", hMidiStrm);
1930 TRACE(
"(%p, %p, %u)!\n", hMidiStrm, lpMMT, cbmmt);
1934 }
else if (lpMMT ==
NULL || cbmmt !=
sizeof(
MMTIME)) {
1937 switch (lpMMT->
wType) {
1947 WARN(
"Unsupported time type %d\n", lpMMT->
wType);
1964 TRACE(
"(%p, %p, %x)\n", hMidiStrm, lpPropData, dwProperty);
2009 TRACE(
"(%p)!\n", hMidiStrm);
2021 }
while (
ret != 0xFFFFFFFF &&
ret != 0);
2022 if (
ret == 0xFFFFFFFF) {
2040 TRACE(
"(%p)!\n", hMidiStrm);
2061 TRACE(
"(%p, %d, %s, %p, %08lX, %08lX, %08X);\n",
2066 TRACE(
"WAVE_FORMAT_QUERY requested !\n");
2073 WARN(
"bad format\n");
2078 WARN(
"invalid parameter\n");
2083 TRACE(
"wFormatTag=%u, nChannels=%u, nSamplesPerSec=%u, nAvgBytesPerSec=%u, nBlockAlign=%u, wBitsPerSample=%u\n",
2165 memcpy(lpCaps, &wocA,
min(uSize,
sizeof(wocA)));
2178 TRACE(
"(%lu %p %u)!\n", uDeviceID, lpCaps, uSize);
2184 FIXME(
"Support WAVE_MAPPER\n");
2235 uError, lpText, uSize) > 0) {
2251 dwCallback, dwInstance,
dwFlags);
2262 TRACE(
"(%p)\n", hWaveOut);
2283 TRACE(
"(%p, %p, %u);\n", hWaveOut, lpWaveOutHdr, uSize);
2285 if (lpWaveOutHdr ==
NULL || uSize <
sizeof (
WAVEHDR))
2299 lpWaveOutHdr->
dwFlags &= ~WHDR_DONE;
2313 TRACE(
"(%p, %p, %u);\n", hWaveOut, lpWaveOutHdr, uSize);
2315 if (lpWaveOutHdr ==
NULL || uSize <
sizeof (
WAVEHDR))
2332 lpWaveOutHdr->
dwFlags &= ~WHDR_PREPARED;
2346 TRACE(
"(%p, %p, %u);\n", hWaveOut, lpWaveOutHdr, uSize);
2361 TRACE(
"(%p);\n", hWaveOut);
2375 TRACE(
"(%p);\n", hWaveOut);
2389 TRACE(
"(%p);\n", hWaveOut);
2403 TRACE(
"(%p);\n", hWaveOut);
2418 TRACE(
"(%p, %p, %u);\n", hWaveOut, lpTime, uSize);
2433 TRACE(
"(%p, %p);\n", hWaveOut, lpdw);
2447 TRACE(
"(%p, %08x);\n", hWaveOut,
dw);
2461 TRACE(
"(%p, %p);\n", hWaveOut, lpdw);
2475 TRACE(
"(%p, %08x);\n", hWaveOut,
dw);
2489 TRACE(
"(%p, %p);\n", hWaveOut, lpdw);
2492 WARN(
"invalid parameter\n");
2509 TRACE(
"(%p, %08x);\n", hWaveOut,
dw);
2524 TRACE(
"(%p, %p);\n", hWaveOut, lpuDeviceID);
2543 TRACE(
"(%p, %u, %ld, %ld)\n", hWaveOut, uMessage, dwParam1, dwParam2);
2549 WARN(
"invalid handle\n");
2555 WARN(
"invalid parameter\n");
2577 TRACE(
"(%lu %p %u)!\n", uDeviceID, lpCaps, uSize);
2583 FIXME(
"Support WAVE_MAPPER\n");
2615 memcpy(lpCaps, &wicA,
min(uSize,
sizeof(wicA)));
2628 dwCallback, dwInstance,
dwFlags);
2639 TRACE(
"(%p)\n", hWaveIn);
2659 TRACE(
"(%p, %p, %u);\n", hWaveIn, lpWaveInHdr, uSize);
2661 if (lpWaveInHdr ==
NULL || uSize <
sizeof (
WAVEHDR))
2675 lpWaveInHdr->
dwFlags &= ~WHDR_DONE;
2690 TRACE(
"(%p, %p, %u);\n", hWaveIn, lpWaveInHdr, uSize);
2692 if (lpWaveInHdr ==
NULL || uSize <
sizeof (
WAVEHDR))
2708 lpWaveInHdr->
dwFlags &= ~WHDR_PREPARED;
2722 TRACE(
"(%p, %p, %u);\n", hWaveIn, lpWaveInHdr, uSize);
2738 TRACE(
"(%p);\n", hWaveIn);
2753 TRACE(
"(%p);\n", hWaveIn);
2768 TRACE(
"(%p);\n", hWaveIn);
2784 TRACE(
"(%p, %p, %u);\n", hWaveIn, lpTime, uSize);
2799 TRACE(
"(%p, %p);\n", hWaveIn, lpuDeviceID);
2818 TRACE(
"(%p, %u, %ld, %ld)\n", hWaveIn, uMessage, dwParam1, dwParam2);
std::map< E_MODULE, HMODULE > mod
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define UlongToHandle(ul)
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
#define DLL_PROCESS_ATTACH
#define DLL_PROCESS_DETACH
#define GetProcAddress(x, y)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
DWORD WINAPI ResumeThread(IN HANDLE hThread)
BOOL WINAPI SetThreadPriority(IN HANDLE hThread, IN int nPriority)
DWORD WINAPI SuspendThread(IN HANDLE hThread)
VOID WINAPI ExitThread(IN DWORD uExitCode)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
DWORD WINAPI GetTickCount(VOID)
TASKCALLBACK FAR * LPTASKCALLBACK
#define MXDM_GETCONTROLDETAILS
#define MXDM_GETLINECONTROLS
#define MXDM_SETCONTROLDETAILS
#define WODM_SETPLAYBACKRATE
#define WODM_GETPLAYBACKRATE
BOOL WINAPI DriverCallback(DWORD dwCallBack, UINT uFlags, HDRVR hDev, UINT wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2)
void DRIVER_UnloadAll(void)
DWORD MCI_SendCommand(UINT wDevID, UINT16 wMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
void TIME_MMTimeStop(void)
GLfloat GLfloat GLfloat GLfloat h
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
REFIID LPVOID DWORD_PTR dw
DWORD MMDRV_Open(LPWINE_MLD mld, UINT wMsg, DWORD_PTR dwParam1, DWORD dwFlags)
DWORD MMDRV_Close(LPWINE_MLD mld, UINT wMsg)
DWORD MMDRV_Message(LPWINE_MLD mld, UINT wMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
LPWINE_MLD MMDRV_GetRelated(HANDLE hndl, UINT srcType, BOOL bSrcCanBeID, UINT dstType)
void MMDRV_Free(HANDLE hndl, LPWINE_MLD mld)
LPWINE_MLD MMDRV_Alloc(UINT size, UINT type, LPHANDLE hndl, DWORD *dwFlags, DWORD_PTR *dwCallback, DWORD_PTR *dwInstance)
UINT MMDRV_PhysicalFeatures(LPWINE_MLD mld, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
UINT MMDRV_GetNum(UINT type)
LPWINE_MLD MMDRV_Get(HANDLE _hndl, UINT type, BOOL bCanBeID)
#define memcpy(s1, s2, n)
struct _WAVEFORMATEX * LPWAVEFORMATEX
#define WAVERR_STILLPLAYING
#define MIXER_OBJECTF_MIDIOUT
struct midievent_tag MIDIEVENT
#define MEVT_EVENTPARM(x)
#define MIXER_OBJECTF_MIXER
#define MIXER_OBJECTF_AUX
#define MIXER_GETLINEINFOF_LINEID
#define CALLBACK_TYPEMASK
#define MMSYSERR_HANDLEBUSY
#define MMSYSERR_NOTSUPPORTED
#define WAVE_FORMAT_QUERY
#define MIXER_GETLINECONTROLSF_QUERYMASK
#define MIDIERR_INVALIDSETUP
#define MIXER_OBJECTF_WAVEOUT
#define MIXER_GETCONTROLDETAILSF_VALUE
#define MIXER_OBJECTF_MIDIIN
#define MIXER_GETLINEINFOF_TARGETTYPE
#define MMSYSERR_NODRIVER
#define MIDIERR_UNPREPARED
#define MIXER_GETCONTROLDETAILSF_QUERYMASK
#define MMSYSERR_DELETEERROR
#define MIXER_GETLINEINFOF_DESTINATION
#define MCI_ALL_DEVICE_ID
#define MMSYSERR_NODRIVERCB
#define MIXER_OBJECTF_HMIDIOUT
struct tagMIXERCONTROLW MIXERCONTROLW
#define MIXER_GETCONTROLDETAILSF_LISTTEXT
#define MIXER_GETLINEINFOF_COMPONENTTYPE
#define MIXER_OBJECTF_WAVEIN
#define MMSYSERR_LASTERROR
#define MMSYSERR_VALNOTFOUND
#define MMSYSERR_INVALHANDLE
struct tagMIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXTA
#define MMSYSERR_WRITEERROR
#define MIXER_GETLINEINFOF_SOURCE
#define MMSYSERR_INVALPARAM
#define MMSYSERR_ALLOCATED
#define MIDIERR_STILLPLAYING
#define MMSYSERR_READERROR
#define MIXER_GETLINECONTROLSF_ONEBYTYPE
#define MIXER_OBJECTF_HWAVEIN
#define MM_MOM_POSITIONCB
#define MEVT_EVENTTYPE(x)
#define MMSYSERR_INVALFLAG
#define CALLBACK_FUNCTION
struct tagMIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXTW
#define MIXER_OBJECTF_HMIDIIN
#define MMSYSERR_KEYNOTFOUND
#define MIXER_GETLINEINFOF_QUERYMASK
#define MIDIERR_LASTERROR
#define MIXER_OBJECTF_HMIXER
struct midihdr_tag * LPMIDIHDR
#define MMSYSERR_BADDEVICEID
#define WAVERR_UNPREPARED
#define WAVE_FORMAT_DIRECT
struct tagMIXERCONTROLA MIXERCONTROLA
#define MIXER_OBJECTF_HWAVEOUT
#define MMSYSERR_NOTENABLED
#define MMSYSERR_INVALIDALIAS
#define MMSYSERR_BADERRNUM
#define sprintf(buf, format,...)
static HMODULE MODULEINFO DWORD cb
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
unsigned __int3264 UINT_PTR
_In_ DWORD _In_ DWORD dwOffset
#define offsetof(TYPE, MEMBER)
void WINAPI mmTaskYield(void)
#define TASKERR_OUTOFMEMORY
DWORD WINAPI mmGetCurrentTask(void)
struct midihdr_tag * lpNext
union mmtime_tag::@3032 u
CHAR szPname[MAXPNAMELEN]
WCHAR szPname[MAXPNAMELEN]
CHAR szPname[MAXPNAMELEN]
WCHAR szPname[MAXPNAMELEN]
CHAR szPname[MAXPNAMELEN]
WCHAR szPname[MAXPNAMELEN]
CHAR szPname[MAXPNAMELEN]
WCHAR szPname[MAXPNAMELEN]
union tagMIXERCONTROLA::@3037 Bounds
CHAR szName[MIXER_LONG_NAME_CHARS]
CHAR szShortName[MIXER_SHORT_NAME_CHARS]
union tagMIXERCONTROLA::@3038 Metrics
CHAR szName[MIXER_LONG_NAME_CHARS]
WCHAR szName[MIXER_LONG_NAME_CHARS]
WCHAR szName[MIXER_LONG_NAME_CHARS]
union tagMIXERCONTROLW::@3041 Bounds
WCHAR szShortName[MIXER_SHORT_NAME_CHARS]
union tagMIXERCONTROLW::@3042 Metrics
CHAR szShortName[MIXER_SHORT_NAME_CHARS]
struct tagMIXERLINEA::@3035 Target
CHAR szName[MIXER_LONG_NAME_CHARS]
struct tagMIXERLINEW::@3036 Target
WCHAR szName[MIXER_LONG_NAME_CHARS]
WCHAR szShortName[MIXER_SHORT_NAME_CHARS]
CHAR szPname[MAXPNAMELEN]
WCHAR szPname[MAXPNAMELEN]
CHAR szPname[MAXPNAMELEN]
WCHAR szPname[MAXPNAMELEN]
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetCurrentThreadId(void)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define THREAD_PRIORITY_TIME_CRITICAL
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
struct WINE_MIDI * LPWINE_MIDI
struct WINE_MIXER * LPWINE_MIXER
UINT WINAPI mmTaskCreate(LPTASKCALLBACK cb, HANDLE *ph, DWORD_PTR client)
UINT WINAPI mixerGetLineControlsW(HMIXEROBJ hmix, LPMIXERLINECONTROLSW lpmlcW, DWORD fdwControls)
UINT WINAPI auxGetVolume(UINT uDeviceID, DWORD *lpdwVolume)
MMRESULT WINAPI midiStreamPosition(HMIDISTRM hMidiStrm, LPMMTIME lpMMT, UINT cbmmt)
UINT WINAPI midiInUnprepareHeader(HMIDIIN hMidiIn, MIDIHDR *lpMidiInHdr, UINT uSize)
UINT WINAPI mixerClose(HMIXER hMix)
UINT WINAPI midiOutReset(HMIDIOUT hMidiOut)
MMRESULT WINAPI midiStreamProperty(HMIDISTRM hMidiStrm, LPBYTE lpPropData, DWORD dwProperty)
UINT WINAPI midiInStop(HMIDIIN hMidiIn)
UINT WINAPI waveInGetPosition(HWAVEIN hWaveIn, LPMMTIME lpTime, UINT uSize)
static void WINMM_DeleteIData(void)
UINT WINAPI mixerGetLineControlsA(HMIXEROBJ hmix, LPMIXERLINECONTROLSA lpmlcA, DWORD fdwControls)
MMRESULT WINAPI midiStreamRestart(HMIDISTRM hMidiStrm)
UINT WINAPI waveOutGetDevCapsA(UINT_PTR uDeviceID, LPWAVEOUTCAPSA lpCaps, UINT uSize)
UINT WINAPI midiInReset(HMIDIIN hMidiIn)
static DWORD WINAPI mmTaskRun(void *pmt)
UINT WINAPI waveOutGetErrorTextW(UINT uError, LPWSTR lpText, UINT uSize)
UINT WINAPI waveOutReset(HWAVEOUT hWaveOut)
static BOOL WINMM_CreateIData(HINSTANCE hInstDLL)
UINT WINAPI waveInAddBuffer(HWAVEIN hWaveIn, WAVEHDR *lpWaveInHdr, UINT uSize)
UINT WINAPI waveOutGetPlaybackRate(HWAVEOUT hWaveOut, LPDWORD lpdw)
static BOOL MMSYSTEM_MidiStream_MessageHandler(WINE_MIDIStream *lpMidiStrm, LPWINE_MIDI lpwm, LPMSG msg)
UINT WINAPI mixerGetDevCapsW(UINT_PTR uDeviceID, LPMIXERCAPSW lpCaps, UINT uSize)
UINT WINAPI midiOutGetErrorTextW(UINT uError, LPWSTR lpText, UINT uSize)
UINT WINAPI midiOutMessage(HMIDIOUT hMidiOut, UINT uMessage, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
MMRESULT WINAPI midiConnect(HMIDI hMidi, HMIDIOUT hmo, LPVOID pReserved)
UINT WINAPI waveInPrepareHeader(HWAVEIN hWaveIn, WAVEHDR *lpWaveInHdr, UINT uSize)
UINT WINAPI midiInGetNumDevs(void)
UINT WINAPI waveOutSetPitch(HWAVEOUT hWaveOut, DWORD dw)
UINT WINAPI waveInStop(HWAVEIN hWaveIn)
static void CALLBACK MIXER_WCallback(HMIXEROBJ hmx, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam, DWORD_PTR param2)
UINT WINAPI midiInGetDevCapsA(UINT_PTR uDeviceID, LPMIDIINCAPSA lpCaps, UINT uSize)
UINT WINAPI waveOutGetErrorTextA(UINT uError, LPSTR lpText, UINT uSize)
UINT WINAPI midiInGetID(HMIDIIN hMidiIn, UINT *lpuDeviceID)
UINT WINAPI waveOutSetVolume(HWAVEOUT hWaveOut, DWORD dw)
UINT WINAPI midiOutLongMsg(HMIDIOUT hMidiOut, MIDIHDR *lpMidiOutHdr, UINT uSize)
UINT WINAPI mixerGetControlDetailsW(HMIXEROBJ hmix, LPMIXERCONTROLDETAILS lpmcdW, DWORD fdwDetails)
static UINT WAVE_Open(HANDLE *lphndl, UINT uDeviceID, UINT uType, LPCWAVEFORMATEX lpFormat, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD dwFlags)
UINT WINAPI midiOutSetVolume(HMIDIOUT hMidiOut, DWORD dwVolume)
UINT WINAPI auxGetNumDevs(void)
static UINT MIXER_GetDev(HMIXEROBJ hmix, DWORD dwFlags, LPWINE_MIXER *lplpwm)
UINT WINAPI midiOutUnprepareHeader(HMIDIOUT hMidiOut, MIDIHDR *lpMidiOutHdr, UINT uSize)
UINT WINAPI mixerGetLineInfoW(HMIXEROBJ hmix, LPMIXERLINEW lpmliW, DWORD fdwInfo)
UINT WINAPI waveInUnprepareHeader(HWAVEIN hWaveIn, WAVEHDR *lpWaveInHdr, UINT uSize)
UINT WINAPI auxGetDevCapsA(UINT_PTR uDeviceID, LPAUXCAPSA lpCaps, UINT uSize)
UINT WINAPI midiOutGetNumDevs(void)
UINT WINAPI mixerGetNumDevs(void)
static LPWINE_MIDI MIDI_OutAlloc(HMIDIOUT *lphMidiOut, DWORD_PTR *lpdwCallback, DWORD_PTR *lpdwInstance, LPDWORD lpdwFlags, DWORD cIDs, MIDIOPENSTRMID *lpIDs)
DWORD WINAPI mixerMessage(HMIXER hmix, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
UINT WINAPI waveOutGetNumDevs(void)
UINT WINAPI midiOutGetErrorTextA(UINT uError, LPSTR lpText, UINT uSize)
UINT WINAPI midiOutGetVolume(HMIDIOUT hMidiOut, DWORD *lpdwVolume)
UINT WINAPI midiOutCachePatches(HMIDIOUT hMidiOut, UINT uBank, WORD *lpwPatchArray, UINT uFlags)
UINT WINAPI midiOutClose(HMIDIOUT hMidiOut)
MMRESULT WINAPI midiInOpen(HMIDIIN *lphMidiIn, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD dwFlags)
UINT WINAPI waveOutGetPosition(HWAVEOUT hWaveOut, LPMMTIME lpTime, UINT uSize)
UINT WINAPI mixerGetDevCapsA(UINT_PTR uDeviceID, LPMIXERCAPSA lpCaps, UINT uSize)
MMRESULT WINMM_CheckCallback(DWORD_PTR dwCallback, DWORD fdwOpen, BOOL mixer)
UINT WINAPI waveInGetID(HWAVEIN hWaveIn, UINT *lpuDeviceID)
UINT WINAPI midiInStart(HMIDIIN hMidiIn)
UINT WINAPI mixerOpen(LPHMIXER lphMix, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
HINSTANCE hWinMM32Instance
UINT WINAPI waveInReset(HWAVEIN hWaveIn)
static BOOL MMSYSTEM_MidiStream_PostMessage(WINE_MIDIStream *lpMidiStrm, WORD msg, DWORD pmt1, DWORD pmt2)
UINT WINAPI waveOutBreakLoop(HWAVEOUT hWaveOut)
UINT WINAPI midiOutGetID(HMIDIOUT hMidiOut, UINT *lpuDeviceID)
UINT WINAPI waveOutWrite(HWAVEOUT hWaveOut, LPWAVEHDR lpWaveOutHdr, UINT uSize)
UINT WINAPI mixerGetControlDetailsA(HMIXEROBJ hmix, LPMIXERCONTROLDETAILS lpmcdA, DWORD fdwDetails)
UINT WINAPI waveOutUnprepareHeader(HWAVEOUT hWaveOut, LPWAVEHDR lpWaveOutHdr, UINT uSize)
MMRESULT WINAPI waveOutOpen(LPHWAVEOUT lphWaveOut, UINT uDeviceID, LPCWAVEFORMATEX lpFormat, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD dwFlags)
UINT WINAPI waveOutRestart(HWAVEOUT hWaveOut)
UINT WINAPI midiOutShortMsg(HMIDIOUT hMidiOut, DWORD dwMsg)
UINT WINAPI waveOutGetDevCapsW(UINT_PTR uDeviceID, LPWAVEOUTCAPSW lpCaps, UINT uSize)
static DWORD MMSYSTEM_MidiStream_Convert(WINE_MIDIStream *lpMidiStrm, DWORD pulse)
MMRESULT WINAPI midiOutOpen(LPHMIDIOUT lphMidiOut, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD dwFlags)
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID fImpLoad)
static DWORD CALLBACK MMSYSTEM_MidiStream_Player(LPVOID pmt)
UINT WINAPI waveOutGetPitch(HWAVEOUT hWaveOut, LPDWORD lpdw)
UINT WINAPI auxSetVolume(UINT uDeviceID, DWORD dwVolume)
UINT WINAPI mixerGetLineInfoA(HMIXEROBJ hmix, LPMIXERLINEA lpmliA, DWORD fdwInfo)
UINT WINAPI mixerGetID(HMIXEROBJ hmix, LPUINT lpid, DWORD fdwID)
BOOL WINAPI mmTaskSignal(DWORD tid)
MMRESULT WINAPI waveInOpen(HWAVEIN *lphWaveIn, UINT uDeviceID, LPCWAVEFORMATEX lpFormat, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD dwFlags)
MMRESULT WINAPI midiStreamOut(HMIDISTRM hMidiStrm, LPMIDIHDR lpMidiHdr, UINT cbMidiHdr)
UINT WINAPI auxGetDevCapsW(UINT_PTR uDeviceID, LPAUXCAPSW lpCaps, UINT uSize)
UINT WINAPI mixerSetControlDetails(HMIXEROBJ hmix, LPMIXERCONTROLDETAILS lpmcd, DWORD fdwDetails)
UINT WINAPI waveOutGetID(HWAVEOUT hWaveOut, UINT *lpuDeviceID)
BOOL WINMM_CheckForMMSystem(void)
CRITICAL_SECTION WINMM_cs
MMRESULT WINAPI midiStreamClose(HMIDISTRM hMidiStrm)
UINT WINAPI waveInGetNumDevs(void)
UINT WINAPI auxOutMessage(UINT uDeviceID, UINT uMessage, DWORD_PTR dw1, DWORD_PTR dw2)
const char * WINMM_ErrorToString(MMRESULT error)
UINT WINAPI midiOutGetDevCapsW(UINT_PTR uDeviceID, LPMIDIOUTCAPSW lpCaps, UINT uSize)
UINT WINAPI waveInClose(HWAVEIN hWaveIn)
MMRESULT WINAPI midiStreamStop(HMIDISTRM hMidiStrm)
UINT WINAPI waveOutPrepareHeader(HWAVEOUT hWaveOut, WAVEHDR *lpWaveOutHdr, UINT uSize)
MMRESULT WINAPI midiStreamPause(HMIDISTRM hMidiStrm)
UINT WINAPI waveOutSetPlaybackRate(HWAVEOUT hWaveOut, DWORD dw)
UINT WINAPI midiOutPrepareHeader(HMIDIOUT hMidiOut, MIDIHDR *lpMidiOutHdr, UINT uSize)
UINT WINAPI midiInClose(HMIDIIN hMidiIn)
UINT WINAPI midiOutCacheDrumPatches(HMIDIOUT hMidiOut, UINT uPatch, WORD *lpwKeyArray, UINT uFlags)
MMRESULT WINAPI midiStreamOpen(HMIDISTRM *lphMidiStrm, LPUINT lpuDeviceID, DWORD cMidi, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
UINT WINAPI waveInStart(HWAVEIN hWaveIn)
MMRESULT WINAPI midiDisconnect(HMIDI hMidi, HMIDIOUT hmo, LPVOID pReserved)
UINT WINAPI midiInGetDevCapsW(UINT_PTR uDeviceID, LPMIDIINCAPSW lpCaps, UINT uSize)
UINT WINAPI waveOutPause(HWAVEOUT hWaveOut)
UINT WINAPI midiInMessage(HMIDIIN hMidiIn, UINT uMessage, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
UINT WINAPI waveInGetDevCapsA(UINT_PTR uDeviceID, LPWAVEINCAPSA lpCaps, UINT uSize)
UINT WINAPI waveInMessage(HWAVEIN hWaveIn, UINT uMessage, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
UINT WINAPI midiInAddBuffer(HMIDIIN hMidiIn, MIDIHDR *lpMidiInHdr, UINT uSize)
UINT WINAPI midiOutGetDevCapsA(UINT_PTR uDeviceID, LPMIDIOUTCAPSA lpCaps, UINT uSize)
UINT WINAPI waveOutMessage(HWAVEOUT hWaveOut, UINT uMessage, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
UINT WINAPI waveOutGetVolume(HWAVEOUT hWaveOut, LPDWORD lpdw)
UINT WINAPI waveOutClose(HWAVEOUT hWaveOut)
VOID WINAPI mmTaskBlock(DWORD tid)
UINT WINAPI midiInPrepareHeader(HMIDIIN hMidiIn, MIDIHDR *lpMidiInHdr, UINT uSize)
UINT WINAPI waveInGetDevCapsW(UINT_PTR uDeviceID, LPWAVEINCAPSW lpCaps, UINT uSize)
static BOOL MMSYSTEM_GetMidiStream(HMIDISTRM hMidiStrm, WINE_MIDIStream **lpMidiStrm, WINE_MIDI **lplpwm)
LRESULT WINAPI DispatchMessageA(_In_ const MSG *)
BOOL WINAPI IsWindow(_In_opt_ HWND)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
DWORD WINAPI MsgWaitForMultipleObjects(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask)
BOOL WINAPI PostThreadMessageW(_In_ DWORD, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI PeekMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI PostThreadMessageA(_In_ DWORD, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetMessageA(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)