Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/* Copyright (c) 1992 Microsoft Corporation */ /* callback put in separate module because must be fixed */ #define UNICODE
//MMSYSTEM
#define MMNOSOUND - Sound support
#define MMNOWAVE - Waveform support
#define MMNOAUX - Auxiliary output support
#define MMNOJOY - Joystick support
//MMDDK
#define NOWAVEDEV - Waveform support
#define NOAUXDEV - Auxiliary output support
#define NOJOYDEV - Joystick support
#include <windows.h>
#include <mmsystem.h>
#include <mmddk.h>
#include "mmsys.h"
#include "list.h"
#include "mciseq.h"
PUBLIC void FAR PASCAL _LOADDS mciSeqCallback (HANDLE h, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dw1, DWORD_PTR dw2) // this function handles messages from the sequencer
{ pSeqStreamType pStream = (pSeqStreamType) dwInstance;
switch (wMsg) { case MIDISEQ_DONE: // sequencer is done with buff (& wants a new one)
// clear the beginning and end flags, and set the done flag
((LPMIDISEQHDR) dw1)->wFlags &= ~(MIDISEQHDR_BOT + MIDISEQHDR_EOT); ((LPMIDISEQHDR) dw1)->wFlags |= MIDISEQHDR_DONE; // set done bit
TaskSignal(pStream->streamTaskHandle, WTM_FILLBUFFER); // SIGNAL on this seq
break;
case MIDISEQ_RESET: // sequencer wants to reset the stream
StreamTrackReset(pStream, (UINT) dw1); break; case MIDISEQ_DONEPLAY: TaskSignal(pStream->streamTaskHandle, WTM_DONEPLAY); break; } }
/***********************************************************************/
PUBLIC void FAR PASCAL NotifyCallback(HANDLE hStream) // Callback for all notifies from MMSEQ
{ Notify((pSeqStreamType)hStream, MCI_NOTIFY_SUCCESSFUL); }
/*************************************************************************/
PUBLIC VOID FAR PASCAL Notify(pSeqStreamType pStream, UINT wStatus) // notifies with cb and instance stored in pStream, with wMsg (success, abort..)
{ if (pStream->hNotifyCB) { mciDriverNotify(pStream->hNotifyCB, pStream->wDeviceID, wStatus); pStream->hNotifyCB = NULL; // this signifies that it has been notified
} }
|