|
|
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.