39 while ( session_info )
42 ( session_info->
device_id == device_id ) )
48 session_info = session_info->
next;
78 DPRINT(
"Already allocated session\n");
85 if ( ! *session_info )
87 DPRINT(
"Failed to allocate mem for session info\n");
93 (*session_info)->device_id = device_id;
128 while ( session_node )
138 session_prev = session_node;
139 session_node = session_node->
next;
167 DPRINT(
"Couldn't create thread_ready event\n");
177 DPRINT(
"Couldn't create thread_go event\n");
196 DPRINT(
"Task creation failed\n");
222 PVOID thread_parameter)
229 DPRINT(
"Calling session thread\n");
232 DPRINT(
"Waiting for thread response\n");
#define HeapFree(x, y, z)
TASKCALLBACK FAR * LPTASKCALLBACK
UINT APIENTRY mmTaskCreate(LPTASKCALLBACK lpfn, HANDLE FAR *lph, DWORD dwInst)
MMRESULT CallSessionThread(SessionInfo *session_info, ThreadFunction function, PVOID thread_parameter)
SessionInfo * GetSession(DeviceType device_type, UINT device_id)
MMRESULT CreateSession(DeviceType device_type, UINT device_id, SessionInfo **session_info)
SessionInfo * session_list
MMRESULT StartSessionThread(SessionInfo *session_info)
DWORD HandleBySessionThread(DWORD_PTR private_handle, DWORD_PTR message, DWORD_PTR parameter)
CRITICAL_SECTION session_lock
VOID DestroySession(SessionInfo *session)
DWORD WaveThread(LPVOID parameter)
#define MMSYSERR_ALLOCATED
struct _SessionInfo * next
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)