3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS Multimedia
5 * FILE: dll/win32/mmdrv/mme.c
6 * PURPOSE: Multimedia User Mode Driver (MME Interface)
7 * PROGRAMMER: Andrew Greenwood
10 * Jan 14, 2007: Rewritten and tidied up
19 Sends a message to the client (application), such as WOM_DONE. This
20 is just a wrapper around DriverCallback which translates the
21 parameters appropriately.
26 SessionInfo
* session_info
,
31 return DriverCallback(session_info
->callback
,
32 HIWORD(session_info
->flags
),
33 session_info
->mme_handle
,
35 session_info
->app_user_data
,
51 DWORD_PTR private_handle
,
57 /* http://www.osronline.com/ddkx/w98ddk/mmedia_4p80.htm */
58 case WODM_GETNUMDEVS
:
59 DPRINT("WODM_GETNUMDEVS\n");
60 return GetDeviceCount(WaveOutDevice
);
62 /* http://www.osronline.com/ddkx/w98ddk/mmedia_4p6h.htm */
63 case WODM_GETDEVCAPS
:
64 DPRINT("WODM_GETDEVCAPS\n");
65 return GetDeviceCapabilities(WaveOutDevice
,
70 /* http://www.osronline.com/ddkx/w98ddk/mmedia_4p85.htm */
73 WAVEOPENDESC
* open_desc
= (WAVEOPENDESC
*) parameter1
;
74 DPRINT("WODM_OPEN\n");
76 if ( parameter2
&& WAVE_FORMAT_QUERY
)
77 return QueryWaveFormat(WaveOutDevice
, open_desc
->lpFormat
);
79 return OpenDevice(WaveOutDevice
,
86 /* http://www.osronline.com/ddkx/w98ddk/mmedia_4p6g.htm */
89 DPRINT("WODM_CLOSE\n");
90 return CloseDevice(private_handle
);
93 /* http://www.osronline.com/ddkx/w98ddk/mmedia_4p9w.htm */
96 DPRINT("WODM_WRITE\n");
97 return WriteWaveBuffer(private_handle
,
98 (PWAVEHDR
) parameter1
,
102 /* http://www.osronline.com/ddkx/w98ddk/mmedia_4p86.htm */
105 DPRINT("WODM_PAUSE\n");
106 return HandleBySessionThread(private_handle
, message
, 0);
109 /* http://www.osronline.com/ddkx/w98ddk/mmedia_4p89.htm */
112 DPRINT("WODM_RESTART\n");
113 return HandleBySessionThread(private_handle
, message
, 0);
116 /* http://www.osronline.com/ddkx/w98ddk/mmedia_4p88.htm */
119 DPRINT("WODM_RESET\n");
120 return HandleBySessionThread(private_handle
, message
, 0);
123 /* http://www.osronline.com/ddkx/w98ddk/mmedia_4p83.htm */
127 DPRINT("WODM_GETPOS\n");
128 return GetPosition(private_handle
,
129 (PMMTIME
) parameter1
,
134 /* http://www.osronline.com/ddkx/w98ddk/mmedia_4p6f.htm */
135 case WODM_BREAKLOOP
:
137 DPRINT("WODM_BREAKLOOP\n");
138 return HandleBySessionThread(private_handle
, message
, 0);
144 DPRINT("Unsupported message\n");
145 return MMSYSERR_NOTSUPPORTED
;