88 DWORD capabilities_size)
94 BOOL device_io_result;
116 DPRINT(
"Failed to open kernel device\n");
131 if ( device_io_result )
156 PVOID open_descriptor,
169 DPRINT(
"Couldn't allocate session info\n");
180 DPRINT(
"Failed to open kernel device\n");
200 DPRINT(
"Only wave devices are supported at present!\n");
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
#define ERROR_INVALID_FUNCTION
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
#define ERROR_NOT_SUPPORTED
#define ERROR_ACCESS_DENIED
DWORD GetDeviceCapabilities(DeviceType device_type, UINT device_id, DWORD_PTR capabilities, DWORD capabilities_size)
MMRESULT ErrorToMmResult(UINT error_code)
DWORD CloseDevice(DWORD_PTR private_handle)
DWORD GetDeviceCount(DeviceType device_type)
DWORD OpenDevice(DeviceType device_type, UINT device_id, PVOID open_descriptor, DWORD flags, DWORD_PTR private_handle)
void CloseKernelDevice(HANDLE device_handle)
MMRESULT OpenKernelDevice(DeviceType device_type, UINT device_id, DWORD access, HANDLE *handle)
struct WAVEOPENDESC * LPWAVEOPENDESC
#define IOCTL_WAVE_GET_CAPABILITIES
#define IOCTL_MIDI_GET_CAPABILITIES
MMRESULT CallSessionThread(SessionInfo *session_info, ThreadFunction function, PVOID thread_parameter)
MMRESULT CreateSession(DeviceType device_type, UINT device_id, SessionInfo **session_info)
#define IsMidiDevice(devicetype)
MMRESULT StartSessionThread(SessionInfo *session_info)
#define IsWaveDevice(devicetype)
BOOL NotifyClient(SessionInfo *session_info, DWORD message, DWORD_PTR parameter1, DWORD_PTR parameter2)
#define IsAuxDevice(devicetype)
VOID DestroySession(SessionInfo *session)
#define MMSYSERR_NOTSUPPORTED
#define MMSYSERR_INVALPARAM
#define MMSYSERR_ALLOCATED
#define MMSYSERR_BADDEVICEID
HANDLE kernel_device_handle
DWORD WINAPI GetLastError(void)