8 use vars qw(@ISA @EXPORT @EXPORT_OK);
14 my $module_declarations = {
15 "CloseDriver" => ["long", ["long", "long", "long"]],
16 "DefDriverProc" => ["long", ["long", "long", "long", "long", "long"]],
17 "DriverCallback" => ["long", ["long", "long", "long", "long", "long", "long", "long"]],
18 "DrvClose" => ["long", ["long", "long", "long"]],
19 "DrvDefDriverProc" => ["long", ["long", "long", "long", "long", "long"]],
20 "DrvGetModuleHandle" => ["long", ["long"]],
21 "DrvOpen" => ["long", ["wstr", "wstr", "long"]],
22 "DrvOpenA" => ["long", ["str", "str", "long"]],
23 "DrvSendMessage" => ["long", ["long", "long", "long", "long"]],
24 "GetDriverFlags" => ["long", ["long"]],
25 "GetDriverModuleHandle" => ["long", ["long"]],
26 "OpenDriver" => ["long", ["wstr", "wstr", "long"]],
27 "OpenDriverA" => ["long", ["str", "str", "long"]],
28 "PlaySound" => ["long", ["str", "long", "long"]],
29 "PlaySoundA" => ["long", ["str", "long", "long"]],
30 "PlaySoundW" => ["long", ["wstr", "long", "long"]],
31 "SendDriverMessage" => ["long", ["long", "long", "long", "long"]],
32 "auxGetDevCapsA" => ["long", ["long", "ptr", "long"]],
33 "auxGetDevCapsW" => ["long", ["long", "ptr", "long"]],
34 "auxGetNumDevs" => ["long", []],
35 "auxGetVolume" => ["long", ["long", "ptr"]],
36 "auxOutMessage" => ["long", ["long", "long", "long", "long"]],
37 "auxSetVolume" => ["long", ["long", "long"]],
38 "joyGetDevCapsA" => ["long", ["long", "ptr", "long"]],
39 "joyGetDevCapsW" => ["long", ["long", "ptr", "long"]],
40 "joyGetNumDevs" => ["long", []],
41 "joyGetPos" => ["long", ["long", "ptr"]],
42 "joyGetPosEx" => ["long", ["long", "ptr"]],
43 "joyGetThreshold" => ["long", ["long", "ptr"]],
44 "joyReleaseCapture" => ["long", ["long"]],
45 "joySetCapture" => ["long", ["long", "long", "long", "long"]],
46 "joySetThreshold" => ["long", ["long", "long"]],
47 "mciDriverNotify" => ["long", ["long", "long", "long"]],
48 "mciDriverYield" => ["long", ["long"]],
49 "mciExecute" => ["long", ["str"]],
50 "mciFreeCommandResource" => ["long", ["long"]],
51 "mciGetCreatorTask" => ["long", ["long"]],
52 "mciGetDeviceIDA" => ["long", ["str"]],
53 "mciGetDeviceIDFromElementIDW" => ["long", ["long", "wstr"]],
54 "mciGetDeviceIDW" => ["long", ["wstr"]],
55 "mciGetDriverData" => ["long", ["long"]],
56 "mciGetErrorStringA" => ["long", ["long", "str", "long"]],
57 "mciGetErrorStringW" => ["long", ["long", "wstr", "long"]],
58 "mciGetYieldProc" => ["ptr", ["long", "ptr"]],
59 "mciLoadCommandResource" => ["long", ["long", "wstr", "long"]],
60 "mciSendCommandA" => ["long", ["long", "long", "long", "long"]],
61 "mciSendCommandW" => ["long", ["long", "long", "long", "long"]],
62 "mciSendStringA" => ["long", ["str", "str", "long", "long"]],
63 "mciSendStringW" => ["long", ["wstr", "str", "long", "long"]],
64 "mciSetDriverData" => ["long", ["long", "long"]],
65 "mciSetYieldProc" => ["long", ["long", "ptr", "long"]],
66 "midiInAddBuffer" => ["long", ["long", "ptr", "long"]],
67 "midiInClose" => ["long", ["long"]],
68 "midiInGetDevCapsA" => ["long", ["long", "ptr", "long"]],
69 "midiInGetDevCapsW" => ["long", ["long", "ptr", "long"]],
70 "midiInGetErrorTextA" => ["long", ["long", "str", "long"]],
71 "midiInGetErrorTextW" => ["long", ["long", "wstr", "long"]],
72 "midiInGetID" => ["long", ["long", "ptr"]],
73 "midiInGetNumDevs" => ["long", []],
74 "midiInMessage" => ["long", ["long", "long", "long", "long"]],
75 "midiInOpen" => ["long", ["ptr", "long", "long", "long", "long"]],
76 "midiInPrepareHeader" => ["long", ["long", "ptr", "long"]],
77 "midiInReset" => ["long", ["long"]],
78 "midiInStart" => ["long", ["long"]],
79 "midiInStop" => ["long", ["long"]],
80 "midiInUnprepareHeader" => ["long", ["long", "ptr", "long"]],
81 "midiOutCacheDrumPatches" => ["long", ["long", "long", "ptr", "long"]],
82 "midiOutCachePatches" => ["long", ["long", "long", "ptr", "long"]],
83 "midiOutClose" => ["long", ["long"]],
84 "midiOutGetDevCapsA" => ["long", ["long", "ptr", "long"]],
85 "midiOutGetDevCapsW" => ["long", ["long", "ptr", "long"]],
86 "midiOutGetErrorTextA" => ["long", ["long", "str", "long"]],
87 "midiOutGetErrorTextW" => ["long", ["long", "wstr", "long"]],
88 "midiOutGetID" => ["long", ["long", "ptr"]],
89 "midiOutGetNumDevs" => ["long", []],
90 "midiOutGetVolume" => ["long", ["long", "ptr"]],
91 "midiOutLongMsg" => ["long", ["long", "ptr", "long"]],
92 "midiOutMessage" => ["long", ["long", "long", "long", "long"]],
93 "midiOutOpen" => ["long", ["ptr", "long", "long", "long", "long"]],
94 "midiOutPrepareHeader" => ["long", ["long", "ptr", "long"]],
95 "midiOutReset" => ["long", ["long"]],
96 "midiOutSetVolume" => ["long", ["long", "long"]],
97 "midiOutShortMsg" => ["long", ["long", "long"]],
98 "midiOutUnprepareHeader" => ["long", ["long", "ptr", "long"]],
99 "midiStreamClose" => ["long", ["long"]],
100 "midiStreamOpen" => ["long", ["ptr", "ptr", "long", "long", "long", "long"]],
101 "midiStreamOut" => ["long", ["long", "ptr", "long"]],
102 "midiStreamPause" => ["long", ["long"]],
103 "midiStreamPosition" => ["long", ["long", "ptr", "long"]],
104 "midiStreamProperty" => ["long", ["long", "ptr", "long"]],
105 "midiStreamRestart" => ["long", ["long"]],
106 "midiStreamStop" => ["long", ["long"]],
107 "mixerClose" => ["long", ["long"]],
108 "mixerGetControlDetailsA" => ["long", ["long", "ptr", "long"]],
109 "mixerGetControlDetailsW" => ["long", ["long", "ptr", "long"]],
110 "mixerGetDevCapsA" => ["long", ["long", "ptr", "long"]],
111 "mixerGetDevCapsW" => ["long", ["long", "ptr", "long"]],
112 "mixerGetID" => ["long", ["long", "ptr", "long"]],
113 "mixerGetLineControlsA" => ["long", ["long", "ptr", "long"]],
114 "mixerGetLineControlsW" => ["long", ["long", "ptr", "long"]],
115 "mixerGetLineInfoA" => ["long", ["long", "ptr", "long"]],
116 "mixerGetLineInfoW" => ["long", ["long", "ptr", "long"]],
117 "mixerGetNumDevs" => ["long", []],
118 "mixerMessage" => ["long", ["long", "long", "long", "long"]],
119 "mixerOpen" => ["long", ["ptr", "long", "long", "long", "long"]],
120 "mixerSetControlDetails" => ["long", ["long", "ptr", "long"]],
121 "mmioAdvance" => ["long", ["long", "ptr", "long"]],
122 "mmioAscend" => ["long", ["long", "ptr", "long"]],
123 "mmioClose" => ["long", ["long", "long"]],
124 "mmioCreateChunk" => ["long", ["long", "ptr", "long"]],
125 "mmioDescend" => ["long", ["long", "ptr", "ptr", "long"]],
126 "mmioFlush" => ["long", ["long", "long"]],
127 "mmioGetInfo" => ["long", ["long", "ptr", "long"]],
128 "mmioInstallIOProcA" => ["ptr", ["long", "ptr", "long"]],
129 "mmioInstallIOProcW" => ["ptr", ["long", "ptr", "long"]],
130 "mmioOpenA" => ["long", ["str", "ptr", "long"]],
131 "mmioOpenW" => ["long", ["wstr", "ptr", "long"]],
132 "mmioRead" => ["long", ["long", "ptr", "long"]],
133 "mmioRenameA" => ["long", ["str", "str", "ptr", "long"]],
134 "mmioRenameW" => ["long", ["wstr", "wstr", "ptr", "long"]],
135 "mmioSeek" => ["long", ["long", "long", "long"]],
136 "mmioSendMessage" => ["long", ["long", "long", "long", "long"]],
137 "mmioSetBuffer" => ["long", ["long", "str", "long", "long"]],
138 "mmioSetInfo" => ["long", ["long", "ptr", "long"]],
139 "mmioStringToFOURCCA" => ["long", ["str", "long"]],
140 "mmioStringToFOURCCW" => ["long", ["wstr", "long"]],
141 "mmioWrite" => ["long", ["long", "ptr", "long"]],
142 "mmsystemGetVersion" => ["long", []],
143 "sndPlaySoundA" => ["long", ["str", "long"]],
144 "sndPlaySoundW" => ["long", ["wstr", "long"]],
145 "timeBeginPeriod" => ["long", ["long"]],
146 "timeEndPeriod" => ["long", ["long"]],
147 "timeGetDevCaps" => ["long", ["ptr", "long"]],
148 "timeGetSystemTime" => ["long", ["ptr", "long"]],
149 "timeGetTime" => ["long", []],
150 "timeKillEvent" => ["long", ["long"]],
151 "timeSetEvent" => ["long", ["long", "long", "ptr", "long", "long"]],
152 "waveInAddBuffer" => ["long", ["long", "ptr", "long"]],
153 "waveInClose" => ["long", ["long"]],
154 "waveInGetDevCapsA" => ["long", ["long", "ptr", "long"]],
155 "waveInGetDevCapsW" => ["long", ["long", "ptr", "long"]],
156 "waveInGetErrorTextA" => ["long", ["long", "str", "long"]],
157 "waveInGetErrorTextW" => ["long", ["long", "wstr", "long"]],
158 "waveInGetID" => ["long", ["long", "ptr"]],
159 "waveInGetNumDevs" => ["long", []],
160 "waveInGetPosition" => ["long", ["long", "ptr", "long"]],
161 "waveInMessage" => ["long", ["long", "long", "long", "long"]],
162 "waveInOpen" => ["long", ["ptr", "long", "ptr", "long", "long", "long"]],
163 "waveInPrepareHeader" => ["long", ["long", "ptr", "long"]],
164 "waveInReset" => ["long", ["long"]],
165 "waveInStart" => ["long", ["long"]],
166 "waveInStop" => ["long", ["long"]],
167 "waveInUnprepareHeader" => ["long", ["long", "ptr", "long"]],
168 "waveOutBreakLoop" => ["long", ["long"]],
169 "waveOutClose" => ["long", ["long"]],
170 "waveOutGetDevCapsA" => ["long", ["long", "ptr", "long"]],
171 "waveOutGetDevCapsW" => ["long", ["long", "ptr", "long"]],
172 "waveOutGetErrorTextA" => ["long", ["long", "str", "long"]],
173 "waveOutGetErrorTextW" => ["long", ["long", "wstr", "long"]],
174 "waveOutGetID" => ["long", ["long", "ptr"]],
175 "waveOutGetNumDevs" => ["long", []],
176 "waveOutGetPitch" => ["long", ["long", "ptr"]],
177 "waveOutGetPlaybackRate" => ["long", ["long", "ptr"]],
178 "waveOutGetPosition" => ["long", ["long", "ptr", "long"]],
179 "waveOutGetVolume" => ["long", ["long", "ptr"]],
180 "waveOutMessage" => ["long", ["long", "long", "long", "long"]],
181 "waveOutOpen" => ["long", ["ptr", "long", "ptr", "long", "long", "long"]],
182 "waveOutPause" => ["long", ["long"]],
183 "waveOutPrepareHeader" => ["long", ["long", "ptr", "long"]],
184 "waveOutReset" => ["long", ["long"]],
185 "waveOutRestart" => ["long", ["long"]],
186 "waveOutSetPitch" => ["long", ["long", "long"]],
187 "waveOutSetPlaybackRate" => ["long", ["long", "long"]],
188 "waveOutSetVolume" => ["long", ["long", "long"]],
189 "waveOutUnprepareHeader" => ["long", ["long", "ptr", "long"]],
190 "waveOutWrite" => ["long", ["long", "ptr", "long"]]
193 &wine::declare("winmm",%$module_declarations);
194 push @EXPORT, map { "&" . $_; } sort(keys(%$module_declarations));