182 lines
5 KiB
C
182 lines
5 KiB
C
|
|
|||
|
/****************************************************************************
|
|||
|
*
|
|||
|
* drvlib.h
|
|||
|
*
|
|||
|
* Multimedia kernel driver support component (mmdrv)
|
|||
|
*
|
|||
|
* Copyright (c) 1991-1994 Microsoft Corporation
|
|||
|
*
|
|||
|
* Local declarations :
|
|||
|
*
|
|||
|
* -- Debug
|
|||
|
* -- Device types
|
|||
|
* -- Routine prototypes
|
|||
|
*
|
|||
|
* History
|
|||
|
* 06-Oct-1993 - Robin Speed (RobinSp) wrote it
|
|||
|
*
|
|||
|
***************************************************************************/
|
|||
|
|
|||
|
/****************************************************************************
|
|||
|
|
|||
|
General includes
|
|||
|
|
|||
|
***************************************************************************/
|
|||
|
|
|||
|
#ifndef RC_INVOKED
|
|||
|
|
|||
|
#include <string.h>
|
|||
|
#include <stdio.h>
|
|||
|
|
|||
|
#endif /* RC_INVOKED */
|
|||
|
|
|||
|
#include <windows.h>
|
|||
|
#include <mmsystem.h>
|
|||
|
#include <devioctl.h>
|
|||
|
|
|||
|
#include <mmddk.h>
|
|||
|
|
|||
|
#include <soundcfg.h>
|
|||
|
|
|||
|
#if DBG
|
|||
|
#define STATIC
|
|||
|
#else
|
|||
|
#define STATIC
|
|||
|
#endif
|
|||
|
|
|||
|
HINSTANCE hInstance;
|
|||
|
|
|||
|
/***************************************************************************
|
|||
|
|
|||
|
DEBUGGING SUPPORT
|
|||
|
|
|||
|
***************************************************************************/
|
|||
|
|
|||
|
|
|||
|
#if DBG
|
|||
|
|
|||
|
#define DEBUG_RETAIL
|
|||
|
|
|||
|
extern int mmdrvDebugLevel;
|
|||
|
extern void mmdrvDbgOut(LPSTR lpszFormat, ...);
|
|||
|
extern void dDbgAssert(LPSTR exp, LPSTR file, int line);
|
|||
|
|
|||
|
DWORD __dwEval;
|
|||
|
|
|||
|
#define dprintf( _x_ ) mmdrvDbgOut _x_
|
|||
|
#define dprintf1( _x_ ) if (mmdrvDebugLevel >= 1) mmdrvDbgOut _x_
|
|||
|
#define dprintf2( _x_ ) if (mmdrvDebugLevel >= 2) mmdrvDbgOut _x_
|
|||
|
#define dprintf3( _x_ ) if (mmdrvDebugLevel >= 3) mmdrvDbgOut _x_
|
|||
|
#define dprintf4( _x_ ) if (mmdrvDebugLevel >= 4) mmdrvDbgOut _x_
|
|||
|
|
|||
|
#define WinAssert(exp) \
|
|||
|
((exp) ? (void)0 : dDbgAssert(#exp, __FILE__, __LINE__))
|
|||
|
#define WinEval(exp) \
|
|||
|
((__dwEval=(DWORD)(exp)) ? (void)0 : dDbgAssert(#exp, __FILE__, __LINE__), __dwEval)
|
|||
|
|
|||
|
#else
|
|||
|
|
|||
|
#define WinAssert(x) 0
|
|||
|
#define WinEval(exp) exp
|
|||
|
|
|||
|
#define dprintf(x)
|
|||
|
#define dprintf1(x)
|
|||
|
#define dprintf2(x)
|
|||
|
#define dprintf3(x)
|
|||
|
#define dprintf4(x)
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
#define D1 dprintf1
|
|||
|
#define D2 dprintf2
|
|||
|
#define D3 dprintf3
|
|||
|
|
|||
|
|
|||
|
/****************************************************************************
|
|||
|
|
|||
|
Our heap
|
|||
|
|
|||
|
****************************************************************************/
|
|||
|
|
|||
|
HANDLE hHeap;
|
|||
|
|
|||
|
/****************************************************************************
|
|||
|
|
|||
|
Our serialization
|
|||
|
|
|||
|
****************************************************************************/
|
|||
|
|
|||
|
CRITICAL_SECTION mmDrvCritSec; // Serialize access to device lists
|
|||
|
|
|||
|
/****************************************************************************
|
|||
|
|
|||
|
Local routines
|
|||
|
|
|||
|
***************************************************************************/
|
|||
|
|
|||
|
BOOL DrvLibInit(HINSTANCE hModule, ULONG Reason, PCONTEXT pContext);
|
|||
|
|
|||
|
DWORD sndTranslateStatus(void);
|
|||
|
MMRESULT sndOpenDev(UINT DeviceType, DWORD dwId,
|
|||
|
PHANDLE phDev, DWORD Access);
|
|||
|
DWORD sndGetNumDevs(UINT DeviceType);
|
|||
|
MMRESULT sndSetData(UINT DeviceType, UINT DeviceId, UINT Length, PBYTE Data,
|
|||
|
ULONG Ioctl);
|
|||
|
MMRESULT sndGetData(UINT DeviceType, UINT DeviceId, UINT Length, PBYTE Data,
|
|||
|
ULONG Ioctl);
|
|||
|
|
|||
|
MMRESULT sndGetHandleData(HANDLE hDev,
|
|||
|
DWORD dwSize,
|
|||
|
PVOID pData,
|
|||
|
ULONG Ioctl,
|
|||
|
HANDLE hEvent);
|
|||
|
|
|||
|
MMRESULT sndSetHandleData(HANDLE hDev,
|
|||
|
DWORD dwSize,
|
|||
|
PVOID pData,
|
|||
|
ULONG Ioctl,
|
|||
|
HANDLE hEvent);
|
|||
|
|
|||
|
BOOL sndFindDeviceInstanceData(DWORD DeviceType,
|
|||
|
DWORD dwId,
|
|||
|
PVOID *InstanceData);
|
|||
|
|
|||
|
BOOL sndSetDeviceInstanceData(DWORD DeviceType,
|
|||
|
DWORD dwId,
|
|||
|
PVOID InstanceData);
|
|||
|
|
|||
|
PVOID sndLoadDeviceData(DWORD DeviceType,
|
|||
|
DWORD dwId,
|
|||
|
LPDWORD pSize);
|
|||
|
|
|||
|
MMRESULT sndFindDevices(VOID);
|
|||
|
|
|||
|
VOID TerminateWave(VOID);
|
|||
|
VOID TerminateMidi(VOID);
|
|||
|
|
|||
|
DWORD midiGetDevCaps(DWORD id, UINT DeviceType, LPBYTE lpCaps, DWORD dwSize);
|
|||
|
void InternalLoadString(UINT StringId, LPTSTR pszString, UINT Length);
|
|||
|
|
|||
|
/****************************************************************************
|
|||
|
|
|||
|
Our local driver procs
|
|||
|
|
|||
|
****************************************************************************/
|
|||
|
|
|||
|
DWORD APIENTRY widMessage(DWORD, DWORD, DWORD_PTR, DWORD_PTR, DWORD_PTR);
|
|||
|
DWORD APIENTRY wodMessage(DWORD, DWORD, DWORD_PTR, DWORD_PTR, DWORD_PTR);
|
|||
|
DWORD APIENTRY midMessage(DWORD, DWORD, DWORD_PTR, DWORD_PTR, DWORD_PTR);
|
|||
|
DWORD APIENTRY modMessage(DWORD, DWORD, DWORD_PTR, DWORD_PTR, DWORD_PTR);
|
|||
|
DWORD APIENTRY mxdMessage(UINT, UINT, DWORD_PTR, DWORD_PTR, DWORD_PTR);
|
|||
|
DWORD APIENTRY auxMessage(UINT, UINT, DWORD_PTR, DWORD_PTR, DWORD_PTR);
|
|||
|
|
|||
|
/****************************************************************************
|
|||
|
|
|||
|
Private messages supported by the library
|
|||
|
|
|||
|
****************************************************************************/
|
|||
|
|
|||
|
#define WIDM_LOWPRIORITY 0x4093
|
|||
|
|
|||
|
|