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