|
|
1.1 ! root 1: ! 2: /**************************************************************************** ! 3: * ! 4: * mmdrv.h ! 5: * ! 6: * Multimedia kernel driver support component (mmdrv) ! 7: * ! 8: * Copyright (c) 1991 Microsoft Corporation. All Rights Reserved. ! 9: * ! 10: * Local declarations : ! 11: * ! 12: * -- Debug ! 13: * -- Device types ! 14: * -- Routine prototypes ! 15: * ! 16: * History ! 17: * 01-Feb-1992 - Robin Speed (RobinSp) wrote it ! 18: * ! 19: ***************************************************************************/ ! 20: ! 21: /**************************************************************************** ! 22: ! 23: General includes ! 24: ! 25: ***************************************************************************/ ! 26: ! 27: #define UNICODE ! 28: #ifndef RC_INVOKED ! 29: ! 30: #include <string.h> ! 31: #include <stdio.h> ! 32: ! 33: #endif /* RC_INVOKED */ ! 34: ! 35: #include <windows.h> ! 36: #include <mmsystem.h> ! 37: #include <devioctl.h> ! 38: ! 39: #include <mmddk.h> ! 40: ! 41: #if DBG ! 42: #define STATIC ! 43: #else ! 44: #define STATIC static ! 45: #endif ! 46: ! 47: // ! 48: // Large Integer divide - 64-bits / 32-bits -> 64-bits ! 49: // ! 50: ! 51: LARGE_INTEGER ! 52: NTAPI ! 53: RtlExtendedLargeIntegerDivide ( ! 54: LARGE_INTEGER Dividend, ! 55: ULONG Divisor, ! 56: PULONG Remainder ! 57: ); ! 58: ! 59: /*************************************************************************** ! 60: ! 61: DEBUGGING SUPPORT ! 62: ! 63: ***************************************************************************/ ! 64: ! 65: ! 66: #if DBG ! 67: ! 68: #define DEBUG_RETAIL ! 69: ! 70: extern int mmdrvDebugLevel; ! 71: extern void mmdrvDbgOut(LPSTR lpszFormat, ...); ! 72: extern void dDbgAssert(LPSTR exp, LPSTR file, int line); ! 73: ! 74: DWORD __dwEval; ! 75: ! 76: #define dprintf( _x_ ) mmdrvDbgOut _x_ ! 77: #define dprintf1( _x_ ) if (mmdrvDebugLevel >= 1) mmdrvDbgOut _x_ ! 78: #define dprintf2( _x_ ) if (mmdrvDebugLevel >= 2) mmdrvDbgOut _x_ ! 79: #define dprintf3( _x_ ) if (mmdrvDebugLevel >= 3) mmdrvDbgOut _x_ ! 80: #define dprintf4( _x_ ) if (mmdrvDebugLevel >= 4) mmdrvDbgOut _x_ ! 81: ! 82: #define WinAssert(exp) \ ! 83: ((exp) ? (void)0 : dDbgAssert(#exp, __FILE__, __LINE__)) ! 84: #define WinEval(exp) \ ! 85: ((__dwEval=(DWORD)(exp)) ? (void)0 : dDbgAssert(#exp, __FILE__, __LINE__), __dwEval) ! 86: ! 87: #else ! 88: ! 89: #define WinAssert(x) 0 ! 90: #define WinEval(exp) exp ! 91: ! 92: #define dprintf(x) ! 93: #define dprintf1(x) ! 94: #define dprintf2(x) ! 95: #define dprintf3(x) ! 96: #define dprintf4(x) ! 97: ! 98: #endif ! 99: ! 100: /**************************************************************************** ! 101: ! 102: Device Types ! 103: ! 104: ***************************************************************************/ ! 105: enum { ! 106: InvalidDevice, ! 107: WaveInDevice, ! 108: WaveOutDevice, ! 109: MidiInDevice, ! 110: MidiOutDevice, ! 111: AuxDevice ! 112: }; ! 113: ! 114: /**************************************************************************** ! 115: ! 116: Our heap ! 117: ! 118: ****************************************************************************/ ! 119: ! 120: HANDLE hHeap; ! 121: ! 122: /**************************************************************************** ! 123: ! 124: Our serialization ! 125: ! 126: ****************************************************************************/ ! 127: ! 128: CRITICAL_SECTION mmDrvCritSec; // Serialize access to device lists ! 129: ! 130: /**************************************************************************** ! 131: ! 132: Local routines ! 133: ! 134: ***************************************************************************/ ! 135: ! 136: DWORD sndTranslateStatus(void); ! 137: MMRESULT sndOpenDev(UINT DeviceType, DWORD dwId, ! 138: PHANDLE phDev, DWORD Access); ! 139: DWORD sndGetNumDevs(UINT DeviceType); ! 140: MMRESULT sndSetData(UINT DeviceType, UINT DeviceId, UINT Length, PBYTE Data, ! 141: ULONG Ioctl); ! 142: MMRESULT sndGetData(UINT DeviceType, UINT DeviceId, UINT Length, PBYTE Data, ! 143: ULONG Ioctl); ! 144: ! 145: MMRESULT sndGetHandleData(HANDLE hDev, ! 146: DWORD dwSize, ! 147: PVOID pData, ! 148: ULONG Ioctl, ! 149: HANDLE hEvent); ! 150: ! 151: MMRESULT sndSetHandleData(HANDLE hDev, ! 152: DWORD dwSize, ! 153: PVOID pData, ! 154: ULONG Ioctl, ! 155: HANDLE hEvent); ! 156: ! 157: VOID TerminateWave(VOID); ! 158: VOID TerminateMidi(VOID); ! 159: ! 160: /**************************************************************************** ! 161: ! 162: Our local driver procs ! 163: ! 164: ****************************************************************************/ ! 165: ! 166: DWORD APIENTRY widMessage(DWORD, DWORD, DWORD, DWORD, DWORD); ! 167: DWORD APIENTRY wodMessage(DWORD, DWORD, DWORD, DWORD, DWORD); ! 168: DWORD APIENTRY midMessage(DWORD, DWORD, DWORD, DWORD, DWORD); ! 169: DWORD APIENTRY modMessage(DWORD, DWORD, DWORD, DWORD, DWORD);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.