home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c083 / 14.ddi / GENINC.PAK / MMSYSTEM.INC < prev    next >
Encoding:
Text File  |  1993-12-02  |  58.8 KB  |  1,489 lines

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;
  3. ;         MMSYSTEM.INC - Multimedia assembly language structures & constants
  4. ;
  5. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6.  
  7. /*
  8.  *      C/C++ Run Time Library - Version 6.0
  9.  *
  10.  *      Copyright (c) 1991, 1993 by Borland International
  11.  *      All Rights Reserved.
  12.  *
  13.  */
  14.  
  15. ;     If defined, the following flags inhibit inclusion
  16. ;     of the indicated items:
  17. ;
  18. ;       MMNODRV          - Installable driver support
  19. ;       MMNOSOUND        - Sound support
  20. ;       MMNOWAVE         - Waveform support
  21. ;       MMNOMIDI         - MIDI support
  22. ;       MMNOAUX          - Auxiliary audio support
  23. ;       MMNOTIMER        - Timer support
  24. ;       MMNOJOY          - Joystick support
  25. ;       MMNOMCI          - MCI support
  26. ;       MMNOMMIO         - Multimedia file I/O support
  27. ;
  28.  
  29. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  30. ;
  31. ;                   General constants and data types
  32. ;
  33. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  34.  
  35. ; general constants
  36. MAXPNAMELEN        equ    32     ; max product name length (including NULL)
  37. MAXERRORLENGTH     equ    128    ; max error text length (including NULL)
  38.  
  39. ; MMTIME data structure
  40. MMTIME  struc
  41.     mmt_wType           dw    ?  ; indicates the contents of the union
  42.     mmt_TimeUnion       dd    ?  ; union
  43. MMTIME  ends
  44.  
  45. SMPTE struc
  46.     smpte_hour      db    ?  ; hours
  47.     smpte_min       db    ?  ; minutes
  48.     smpte_sec       db    ?  ; seconds
  49.     smpte_frame     db    ?  ; frames
  50.     smpte_fps       db    ?  ; frames per second
  51.     smpte_reserved  db    ?  ; pad
  52. SMPTE ends
  53.  
  54. ; types for wType field in MMTIME struct
  55. TIME_MS         equ    0001h   ; time in milliseconds
  56. TIME_SAMPLES    equ    0002h   ; number of wave samples
  57. TIME_BYTES      equ    0004h   ; current byte offset
  58. TIME_SMPTE      equ    0008h   ; SMPTE time
  59. TIME_MIDI       equ    0010h   ; MIDI time
  60.  
  61.  
  62. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  63. ;
  64. ;                   Multimedia Extensions Window Messages
  65. ;
  66. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  67.  
  68. MM_JOY1MOVE         equ    3A0h            ; joystick
  69. MM_JOY2MOVE         equ    3A1h
  70. MM_JOY1ZMOVE        equ    3A2h
  71. MM_JOY2ZMOVE        equ    3A3h
  72. MM_JOY1BUTTONDOWN   equ    3B5h
  73. MM_JOY2BUTTONDOWN   equ    3B6h
  74. MM_JOY1BUTTONUP     equ    3B7h
  75. MM_JOY2BUTTONUP     equ    3B8h
  76.  
  77. MM_MCINOTIFY        equ    3B9h            ; MCI
  78. MM_MCISYSTEM_STRING equ    3CAh
  79.  
  80. MM_WOM_OPEN         equ    3BBh            ; waveform output
  81. MM_WOM_CLOSE        equ    3BCh
  82. MM_WOM_DONE         equ    3BDh
  83.  
  84. MM_WIM_OPEN         equ    3BEh            ; waveform input
  85. MM_WIM_CLOSE        equ    3BFh
  86. MM_WIM_DATA         equ    3C0h
  87.  
  88. MM_MIM_OPEN         equ    3C1h            ; MIDI input
  89. MM_MIM_CLOSE        equ    3C2h
  90. MM_MIM_DATA         equ    3C3h
  91. MM_MIM_LONGDATA     equ    3C4h
  92. MM_MIM_ERROR        equ    3C5h
  93. MM_MIM_LONGERROR    equ    3C6h
  94.  
  95. MM_MOM_OPEN         equ    3C7h            ; MIDI output
  96. MM_MOM_CLOSE        equ    3C8h
  97. MM_MOM_DONE         equ    3C9h
  98.  
  99.  
  100. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  101. ;
  102. ;               String resource number bases (internal use)
  103. ;
  104. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  105.  
  106. MMSYSERR_BASE          equ    0
  107. WAVERR_BASE            equ    32
  108. MIDIERR_BASE           equ    64
  109. TIMERR_BASE            equ    96
  110. JOYERR_BASE            equ    160
  111. MCIERR_BASE            equ    256
  112.  
  113. MCI_STRING_OFFSET      equ    512
  114. MCI_VD_OFFSET          equ    1024
  115. MCI_CD_OFFSET          equ    1088
  116. MCI_WAVE_OFFSET        equ    1152
  117. MCI_SEQ_OFFSET         equ    1216
  118.  
  119. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  120. ;
  121. ;                       General error return values
  122. ;
  123. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  124.  
  125. ; general error return values
  126. MMSYSERR_NOERROR      equ    0                    ; no error
  127. MMSYSERR_ERROR        equ    (MMSYSERR_BASE + 1)  ; unspecified error
  128. MMSYSERR_BADDEVICEID  equ    (MMSYSERR_BASE + 2)  ; device ID out of range
  129. MMSYSERR_NOTENABLED   equ    (MMSYSERR_BASE + 3)  ; driver failed enable
  130. MMSYSERR_ALLOCATED    equ    (MMSYSERR_BASE + 4)  ; device already allocated
  131. MMSYSERR_INVALHANDLE  equ    (MMSYSERR_BASE + 5)  ; device handle is invalid
  132. MMSYSERR_NODRIVER     equ    (MMSYSERR_BASE + 6)  ; no device driver present
  133. MMSYSERR_NOMEM        equ    (MMSYSERR_BASE + 7)  ; memory allocation error
  134. MMSYSERR_NOTSUPPORTED equ    (MMSYSERR_BASE + 8)  ; function isn't supported
  135. MMSYSERR_BADERRNUM    equ    (MMSYSERR_BASE + 9)  ; error value out of range
  136. MMSYSERR_INVALFLAG    equ    (MMSYSERR_BASE + 10) ; invalid flags passed
  137. MMSYSERR_INVALPARAM   equ    (MMSYSERR_BASE + 11) ; invalid parameter passed
  138. MMSYSERR_LASTERROR    equ    (MMSYSERR_BASE + 11) ; last error in range
  139.  
  140.  
  141. ifndef MMNODRV
  142. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  143. ;
  144. ;                       Installable driver support
  145. ;
  146. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  147.  
  148. DRV_MCI_FIRST          equ    DRV_RESERVED
  149. DRV_MCI_LAST           equ    (DRV_RESERVED + 0FFFh)
  150.  
  151. endif  ;ifndef MMNODRV
  152.  
  153.  
  154. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  155. ;
  156. ;                         Driver callback support
  157. ;
  158. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  159.  
  160. ; flags used with waveOutOpen(), waveInOpen(), midiInOpen(), and
  161. ; midiOutOpen() to specify the type of the dwCallback parameter.
  162. CALLBACK_TYPEMASK   equ    00070000h     ; callback type mask
  163. CALLBACK_NULL       equ    00000000h     ; no callback
  164. CALLBACK_WINDOW     equ    00010000h     ; dwCallback is a HWND
  165. CALLBACK_TASK       equ    00020000h     ; dwCallback is a HTASK
  166. CALLBACK_FUNCTION   equ    00030000h     ; dwCallback is a FARPROC
  167.  
  168. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  169. ;
  170. ;                        Manufacturer and product IDs
  171. ;
  172. ;   Used with wMid and wPid fields in WAVEOUTCAPS, WAVEINCAPS,
  173. ;   MIDIOUTCAPS, MIDIINCAPS, AUXCAPS, JOYCAPS structures.
  174. ;
  175. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  176.  
  177. ; manufacturer IDs
  178. MM_MICROSOFT            equ    1       ; Microsoft Corp.
  179.  
  180. ; product IDs
  181. MM_MIDI_MAPPER          equ    1       ; MIDI Mapper
  182. MM_WAVE_MAPPER          equ    2       ; Wave Mapper
  183.  
  184. MM_SNDBLST_MIDIOUT      equ    3       ; Sound Blaster MIDI output port
  185. MM_SNDBLST_MIDIIN       equ    4       ; Sound Blaster MIDI input port
  186. MM_SNDBLST_SYNTH        equ    5       ; Sound Blaster internal synthesizer
  187. MM_SNDBLST_WAVEOUT      equ    6       ; Sound Blaster waveform output
  188. MM_SNDBLST_WAVEIN       equ    7       ; Sound Blaster waveform input
  189.  
  190. MM_ADLIB                equ    9       ; Ad Lib-compatible synthesizer
  191.  
  192. MM_MPU401_MIDIOUT       equ    10      ; MPU401-compatible MIDI output port
  193. MM_MPU401_MIDIIN        equ    11      ; MPU401-compatible MIDI input port
  194.  
  195. MM_PC_JOYSTICK          equ    12      ; Joystick adapter
  196.  
  197.  
  198. ifndef MMNOSOUND
  199. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  200. ;
  201. ;                           Sound support
  202. ;
  203. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  204.  
  205. ; flag values for wFlags parameter
  206. SND_SYNC            equ    0000h   ; play synchronously (default)
  207. SND_ASYNC           equ    0001h   ; play asynchronously
  208. SND_NODEFAULT       equ    0002h   ; don't use default sound
  209. SND_MEMORY          equ    0004h   ; lpszSoundName points to a memory file
  210. SND_LOOP            equ    0008h   ; loop the sound until next sndPlaySound
  211. SND_NOSTOP          equ    0010h   ; don't stop any currently playing sound
  212.  
  213. endif  ;ifndef MMNOSOUND
  214.  
  215.  
  216. ifndef MMNOWAVE
  217. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  218. ;
  219. ;                       Waveform audio support
  220. ;
  221. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  222.  
  223. ; waveform audio error return values
  224. WAVERR_BADFORMAT      equ    (WAVERR_BASE + 0)    ; unsupported wave format
  225. WAVERR_STILLPLAYING   equ    (WAVERR_BASE + 1)    ; still something playing
  226. WAVERR_UNPREPARED     equ    (WAVERR_BASE + 2)    ; header not prepared
  227. WAVERR_SYNC           equ    (WAVERR_BASE + 3)    ; device is synchronous
  228. WAVERR_LASTERROR      equ    (WAVERR_BASE + 3)    ; last error in range
  229.  
  230. ; wave callback messages
  231. WOM_OPEN        equ    MM_WOM_OPEN
  232. WOM_CLOSE       equ    MM_WOM_CLOSE
  233. WOM_DONE        equ    MM_WOM_DONE
  234. WIM_OPEN        equ    MM_WIM_OPEN
  235. WIM_CLOSE       equ    MM_WIM_CLOSE
  236. WIM_DATA        equ    MM_WIM_DATA
  237.  
  238. ; device ID for wave device mapper
  239. WAVE_MAPPER     equ    (-1)
  240.  
  241. ; flags for dwFlags parameter in waveOutOpen() and waveInOpen()
  242. WAVE_FORMAT_QUERY     equ    0001h
  243. WAVE_ALLOWSYNC        equ    0002h
  244.  
  245. ; wave data block header
  246. WAVEHDR struc
  247.     lpWaveData               dd    ?     ; pointer to locked data buffer
  248.     dwWaveBufferLength       dd    ?     ; length of data buffer
  249.     dwWaveBytesRecorded      dd    ?     ; used for input only
  250.     dwWaveUser               dd    ?     ; for client's use
  251.     dwWaveFlags              dd    ?     ; assorted flags (see defines)
  252.     dwWaveLoops              dd    ?     ; loop control counter
  253.     lpWaveNext               dd    ?     ; reserved for driver
  254.     Wavereserved             dd    ?     ; reserved for driver
  255. WAVEHDR ends
  256.  
  257. ; flags for dwFlags field of WAVEHDR
  258. WHDR_DONE       equ    00000001h   ; done bit
  259. WHDR_PREPARED   equ    00000002h   ; set if this header has been prepared
  260. WHDR_BEGINLOOP  equ    00000004h   ; loop start block
  261. WHDR_ENDLOOP    equ    00000008h   ; loop end block
  262. WHDR_INQUEUE    equ    00000010h   ; reserved for driver
  263.  
  264. ; waveform output device capabilities structure
  265. WAVEOUTCAPS struc
  266.     woc_wMid            dw      ?      ; manufacturer ID
  267.     woc_wPid            dw      ?      ; product ID
  268.     woc_vDriverVersion  dw      ?      ; version of the driver
  269.     woc_szPname         db MAXPNAMELEN dup (?)  ; product name (NULL terminated string)
  270.     woc_dwFormats       dd      ?      ; formats supported
  271.     woc_wChannels       dw      ?      ; number of sources supported
  272.     woc_dwSupport       dd      ?      ; functionality supported by driver
  273. WAVEOUTCAPS ends
  274.  
  275. ; flags for dwSupport field of WAVEOUTCAPS
  276. WAVECAPS_PITCH          equ    0001h    ; supports pitch control
  277. WAVECAPS_PLAYBACKRATE   equ    0002h    ; supports playback rate control
  278. WAVECAPS_VOLUME         equ    0004h    ; supports volume control
  279. WAVECAPS_LRVOLUME       equ    0008h    ; separate left-right volume control
  280. WAVECAPS_SYNC           equ    0010h
  281.  
  282. ; waveform input device capabilities structure
  283. WAVEINCAPS struc
  284.     wic_wMid            dw      ?      ; manufacturer ID
  285.     wic_wPid            dw      ?      ; product ID
  286.     wic_vDriverVersion  dw      ?      ; version of the driver
  287.     wic_szPname         db MAXPNAMELEN dup (?)  ; product name (NULL terminated string)
  288.     wic_dwFormats       dd      ?      ; formats supported
  289.     wic_wChannels       dw      ?      ; number of channels supported
  290. WAVEINCAPS ends
  291.  
  292. ; defines for dwFormat field of WAVEINCAPS and WAVEOUTCAPS
  293. WAVE_INVALIDFORMAT     equ    00000000h        ; invalid format
  294. WAVE_FORMAT_1M08       equ    00000001h        ; 11.025 kHz, Mono,   8-bit
  295. WAVE_FORMAT_1S08       equ    00000002h        ; 11.025 kHz, Stereo, 8-bit
  296. WAVE_FORMAT_1M16       equ    00000004h        ; 11.025 kHz, Mono,   16-bit
  297. WAVE_FORMAT_1S16       equ    00000008h        ; 11.025 kHz, Stereo, 16-bit
  298. WAVE_FORMAT_2M08       equ    00000010h        ; 22.05  kHz, Mono,   8-bit
  299. WAVE_FORMAT_2S08       equ    00000020h        ; 22.05  kHz, Stereo, 8-bit
  300. WAVE_FORMAT_2M16       equ    00000040h        ; 22.05  kHz, Mono,   16-bit
  301. WAVE_FORMAT_2S16       equ    00000080h        ; 22.05  kHz, Stereo, 16-bit
  302. WAVE_FORMAT_4M08       equ    00000100h        ; 44.1   kHz, Mono,   8-bit
  303. WAVE_FORMAT_4S08       equ    00000200h        ; 44.1   kHz, Stereo, 8-bit
  304. WAVE_FORMAT_4M16       equ    00000400h        ; 44.1   kHz, Mono,   16-bit
  305. WAVE_FORMAT_4S16       equ    00000800h        ; 44.1   kHz, Stereo, 16-bit
  306.  
  307. ; general waveform format structure (information common to all formats)
  308. WAVEFORMAT struc
  309.     wfmt_wFormatTag       dw    ?   ; format type
  310.     wfmt_nChannels        dw    ?   ; number of channels (i.e. mono, stereo, etc.)
  311.     wfmt_nSamplesPerSec   dd    ?   ; sample rate
  312.     wfmt_nAvgBytesPerSec  dd    ?   ; for buffer estimation
  313.     wfmt_nBlockAlign      dw    ?   ; block size of data
  314. WAVEFORMAT ends
  315.  
  316. ; flags for wFormatTag field of WAVEFORMAT
  317. WAVE_FORMAT_PCM     equ    1
  318.  
  319. ; specific waveform format structure for PCM data
  320. PCMWAVEFORMAT struc
  321.     pcm_wf               db (SIZE WAVEFORMAT) dup (?)
  322.     pcm_wBitsPerSample   dw    ?
  323. PCMWAVEFORMAT ends
  324.  
  325. endif  ;ifndef MMNOWAVE
  326.  
  327.  
  328. ifndef MMNOMIDI
  329. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  330. ;
  331. ;                           MIDI audio support
  332. ;
  333. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  334.  
  335. ; MIDI error return values
  336. MIDIERR_UNPREPARED    equ    (MIDIERR_BASE + 0)   ; header not prepared
  337. MIDIERR_STILLPLAYING  equ    (MIDIERR_BASE + 1)   ; still something playing
  338. MIDIERR_NOMAP         equ    (MIDIERR_BASE + 2)   ; no current map
  339. MIDIERR_NOTREADY      equ    (MIDIERR_BASE + 3)   ; hardware is still busy
  340. MIDIERR_NODEVICE      equ    (MIDIERR_BASE + 4)   ; port no longer connected
  341. MIDIERR_INVALIDSETUP  equ    (MIDIERR_BASE + 5)   ; invalid setup
  342. MIDIERR_LASTERROR     equ    (MIDIERR_BASE + 5)   ; last error in range
  343.  
  344. ; MIDI audio data types
  345. MIDIPATCHSIZE   equ    128
  346.  
  347. ; MIDI callback messages
  348. MIM_OPEN        equ    MM_MIM_OPEN
  349. MIM_CLOSE       equ    MM_MIM_CLOSE
  350. MIM_DATA        equ    MM_MIM_DATA
  351. MIM_LONGDATA    equ    MM_MIM_LONGDATA
  352. MIM_ERROR       equ    MM_MIM_ERROR
  353. MIM_LONGERROR   equ    MM_MIM_LONGERROR
  354. MOM_OPEN        equ    MM_MOM_OPEN
  355. MOM_CLOSE       equ    MM_MOM_CLOSE
  356. MOM_DONE        equ    MM_MOM_DONE
  357.  
  358. ; device ID for MIDI mapper
  359. MIDIMAPPER     equ    (-1)
  360. MIDI_MAPPER    equ    (-1)
  361.  
  362. ; flags for wFlags parm of midiOutCachePatches(),
  363. ; midiOutCacheDrumPatches()
  364. MIDI_CACHE_ALL      equ    1
  365. MIDI_CACHE_BESTFIT  equ    2
  366. MIDI_CACHE_QUERY    equ    3
  367. MIDI_UNCACHE        equ    4
  368.  
  369. ; MIDI output device capabilities structure
  370. MIDIOUTCAPS struc
  371.     moc_wMid            dw    ?        ; manufacturer ID
  372.     moc_wPid            dw    ?        ; product ID
  373.     moc_vDriverVersion  dw    ?        ; version of the driver
  374.     moc_szPname         db MAXPNAMELEN dup (?) ; product name (NULL terminated string)
  375.     moc_wTechnology     dw    ?        ; type of device
  376.     moc_wVoices         dw    ?        ; # of voices (internal synth only)
  377.     moc_wNotes          dw    ?        ; max # of notes (internal synth only)
  378.     moc_wChannelMask    dw    ?        ; channels used (internal synth only)
  379.     moc_dwSupport       dd    ?        ; functionality supported by driver
  380. MIDIOUTCAPS ends
  381.  
  382. ; flags for wTechnology field of MIDIOUTCAPS structure
  383. MOD_MIDIPORT    equ    1  ; output port
  384. MOD_SYNTH       equ    2  ; generic internal synth
  385. MOD_SQSYNTH     equ    3  ; square wave internal synth
  386. MOD_FMSYNTH     equ    4  ; FM internal synth
  387. MOD_MAPPER      equ    5  ; MIDI mapper
  388.  
  389. ; flags for dwSupport field of MIDIOUTCAPS structure
  390. MIDICAPS_VOLUME          equ    0001h   ; supports volume control
  391. MIDICAPS_LRVOLUME        equ    0002h   ; separate left-right volume control
  392. MIDICAPS_CACHE           equ    0004h
  393.  
  394. ; MIDI output device capabilities structure
  395. MIDIINCAPS struc
  396.     mic_wMid            dw    ?       ; manufacturer ID
  397.     mic_wPid            dw    ?       ; product ID
  398.     mic_vDriverVersion  dw    ?       ; version of the driver
  399.     mic_szPname         db MAXPNAMELEN dup (?) ; product name (NULL terminated string)
  400. MIDIINCAPS ends
  401.  
  402. ; MIDI data block header
  403. MIDIHDR struc
  404.     lpMidiData            dd    ?      ; pointer to locked data block
  405.     dwMidiBufferLength    dd    ?      ; length of data in data block
  406.     dwMidiBytesRecorded   dd    ?      ; used for input only
  407.     dwMidiUser            dd    ?      ; for client's use
  408.     dwMidiFlags           dd    ?      ; assorted flags (see defines)
  409.     lpMidiNext            dd    ?      ; reserved for driver
  410.     Midireserved          dd    ?      ; reserved for driver
  411. MIDIHDR ends
  412.  
  413. ; flags for dwFlags field of MIDIHDR structure
  414. MHDR_DONE       equ    00000001h        ; done bit
  415. MHDR_PREPARED   equ    00000002h        ; set if header prepared
  416. MHDR_INQUEUE    equ    00000004h        ; reserved for driver
  417.  
  418. endif  ;ifndef MMNOMIDI
  419.  
  420.  
  421. ifndef MMNOAUX
  422. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  423. ;
  424. ;                       Auxiliary audio support
  425. ;
  426. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  427.  
  428. ; device ID for aux device mapper
  429. AUX_MAPPER     equ    (-1)
  430.  
  431. ; Auxiliary audio device capabilities structure
  432. AUXCAPS struc
  433.     acaps_wMid              dw    ?      ; manufacturer ID
  434.     acaps_wPid              dw    ?      ; product ID
  435.     acaps_vDriverVersion    dw    ?      ; version of the driver
  436.     acaps_szPname           db MAXPNAMELEN dup (?) ; product name (NULL terminated string)
  437.     acaps_wTechnology       dw    ?      ; type of device
  438.     acaps_dwSupport         dd    ?      ; functionality supported by driver
  439. AUXCAPS ends
  440.  
  441. ; flags for wTechnology field in AUXCAPS structure
  442. AUXCAPS_CDAUDIO    equ    1       ; audio from internal CD-ROM drive
  443. AUXCAPS_AUXIN      equ    2       ; audio from auxiliary input jacks
  444.  
  445. ; flags for dwSupport field in AUXCAPS structure
  446. AUXCAPS_VOLUME          equ    0001h   ; supports volume control
  447. AUXCAPS_LRVOLUME        equ    0002h   ; separate left-right volume control
  448.  
  449. endif  ;ifndef MMNOAUX
  450.  
  451.  
  452. ifndef MMNOTIMER
  453. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  454. ;
  455. ;                           Timer support
  456. ;
  457. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  458.  
  459. ; timer error return values
  460. TIMERR_NOERROR        equ    (0)                  ; no error
  461. TIMERR_NOCANDO        equ    (TIMERR_BASE+1)      ; request not completed
  462. TIMERR_STRUCT         equ    (TIMERR_BASE+33)     ; time struct size
  463.  
  464. ; flags for wFlags parameter of timeSetEvent() function
  465. TIME_ONESHOT    equ    0   ; program timer for single event
  466. TIME_PERIODIC   equ    1   ; program for continuous periodic event
  467.  
  468. ; timer device capabilities data structure
  469. TIMECAPS struc
  470.     tc_wPeriodMin    dw    ?     ; minimum period supported
  471.     tc_wPeriodMax    dw    ?     ; maximum period supported
  472. TIMECAPS ends
  473.  
  474. endif  ;ifndef MMNOTIMER
  475.  
  476.  
  477. ifndef MMNOJOY
  478. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  479. ;
  480. ;                           Joystick support
  481. ;
  482. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  483.  
  484. ; joystick error return values
  485. JOYERR_NOERROR        equ    (0)                  ; no error
  486. JOYERR_PARMS          equ    (JOYERR_BASE+5)      ; bad parameters
  487. JOYERR_NOCANDO        equ    (JOYERR_BASE+6)      ; request not completed
  488. JOYERR_UNPLUGGED      equ    (JOYERR_BASE+7)      ; joystick is unplugged
  489.  
  490. ; constants used with JOYINFO structure and MM_JOY* messages
  491. JOY_BUTTON1         equ    0001h
  492. JOY_BUTTON2         equ    0002h
  493. JOY_BUTTON3         equ    0004h
  494. JOY_BUTTON4         equ    0008h
  495. JOY_BUTTON1CHG      equ    0100h
  496. JOY_BUTTON2CHG      equ    0200h
  497. JOY_BUTTON3CHG      equ    0400h
  498. JOY_BUTTON4CHG      equ    0800h
  499.  
  500. ; joystick ID constants
  501. JOYSTICKID1         equ    0
  502. JOYSTICKID2         equ    1
  503.  
  504. ; joystick device capabilities data structure
  505. JOYCAPS struc
  506.     jcaps_wMid         dw    ?    ; manufacturer ID
  507.     jcaps_wPid         dw    ?    ; product ID
  508.     jcaps_szPname      db MAXPNAMELEN dup (?) ; product name (NULL terminated string)
  509.     jcaps_wXmin        dw    ?    ; minimum x position value
  510.     jcaps_wXmax        dw    ?    ; maximum x position value
  511.     jcaps_wYmin        dw    ?    ; minimum y position value
  512.     jcaps_wYmax        dw    ?    ; maximum y position value
  513.     jcaps_wZmin        dw    ?    ; minimum z position value
  514.     jcaps_wZmax        dw    ?    ; maximum z position value
  515.     jcaps_wNumButtons  dw    ?    ; number of buttons
  516.     jcaps_wPeriodMin   dw    ?    ; minimum message period when captured
  517.     jcaps_wPeriodMax   dw    ?    ; maximum message period when captured
  518. JOYCAPS ends
  519.  
  520. ; joystick information data structure
  521. JOYINFO struc
  522.     jinfo_wXpos        dw    ?  ; x position
  523.     jinfo_wYpos        dw    ?  ; y position
  524.     jinfo_wZpos        dw    ?  ; z position
  525.     jinfo_wButtons     dw    ?  ; button states
  526. JOYINFO ends
  527.  
  528. endif  ;ifndef MMNOJOY
  529.  
  530. ifndef MMNOMMIO
  531. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  532. ;
  533. ;                       Multimedia File I/O support
  534. ;
  535. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  536.  
  537. ; MMIO error return values
  538. MMIOERR_BASE            equ    256
  539. MMIOERR_FILENOTFOUND    equ    (MMIOERR_BASE + 1)  ; file not found
  540. MMIOERR_OUTOFMEMORY     equ    (MMIOERR_BASE + 2)  ; out of memory
  541. MMIOERR_CANNOTOPEN      equ    (MMIOERR_BASE + 3)  ; cannot open
  542. MMIOERR_CANNOTCLOSE     equ    (MMIOERR_BASE + 4)  ; cannot close
  543. MMIOERR_CANNOTREAD      equ    (MMIOERR_BASE + 5)  ; cannot read
  544. MMIOERR_CANNOTWRITE     equ    (MMIOERR_BASE + 6)  ; cannot write
  545. MMIOERR_CANNOTSEEK      equ    (MMIOERR_BASE + 7)  ; cannot seek
  546. MMIOERR_CANNOTEXPAND    equ    (MMIOERR_BASE + 8)  ; cannot expand file
  547. MMIOERR_CHUNKNOTFOUND   equ    (MMIOERR_BASE + 9)  ; chunk not found
  548. MMIOERR_UNBUFFERED      equ    (MMIOERR_BASE + 10) ; file is unbuffered
  549.  
  550. ; MMIO constants
  551. CFSEPCHAR    equ   '+'             ; compound file name separator char.
  552.  
  553. ; general MMIO information data structure
  554. MMIOINFO struc
  555.         ; general fields
  556.     mmio_dwFlags        dd    ?      ; general status flags
  557.     mmio_fccIOProc      dd    ?      ; pointer to I/O procedure
  558.     mmio_pIOProc        dd    ?      ; pointer to I/O procedure
  559.     mmio_wErrorRet      dw    ?      ; place for error to be returned
  560.     mmio_htask          dw    ?      ; alternate local task
  561.  
  562.         ; fields maintained by MMIO functions during buffered I/O
  563.     mmio_cchBuffer      dd    ?      ; size of I/O buffer (or 0L)
  564.     mmio_pchBuffer      dd    ?      ; start of I/O buffer (or NULL)
  565.     mmio_pchNext        dd    ?      ; pointer to next byte to read/write
  566.     mmio_pchEndRead     dd    ?      ; pointer to last valid byte to read
  567.     mmio_pchEndWrite    dd    ?      ; pointer to last byte to write
  568.     mmio_lBufOffset     dd    ?      ; disk offset of start of buffer
  569.  
  570.         ; fields maintained by I/O procedure
  571.     mmio_lDiskOffset    dd    ?      ; disk offset of next read or write
  572.     mmio_adwInfo        dd 3 dup (?) ; data specific to type of MMIOPROC
  573.  
  574.         ; other fields maintained by MMIO
  575.     mmio_dwReserved1    dd    ?      ; reserved for MMIO use
  576.     mmio_dwReserved2    dd    ?      ; reserved for MMIO use
  577.     mmio_hmmio          dw    ?      ; handle to open file
  578. MMIOINFO ends
  579.  
  580. ; RIFF chunk information data structure
  581. MMCKINFO struc
  582.     mmck_ckid          dd    ?  ; chunk ID
  583.     mmck_cksize        dd    ?  ; chunk size
  584.     mmck_fccType       dd    ?  ; form type or list type
  585.     mmck_dwDataOffset  dd    ?  ; offset of data portion of chunk
  586.     mmck_dwFlags       dd    ?  ; flags used by MMIO functions
  587. MMCKINFO ends
  588.  
  589. ; bit field masks
  590. MMIO_RWMODE     equ    00000003h       ; open file for reading/writing/both
  591. MMIO_SHAREMODE  equ    00000070h       ; file sharing mode number
  592.  
  593. ; constants for dwFlags field of MMIOINFO
  594. MMIO_CREATE     equ    00001000h       ; create new file (or truncate file)
  595. MMIO_PARSE      equ    00000100h       ; parse new file returning path
  596. MMIO_DELETE     equ    00000200h       ; create new file (or truncate file)
  597. MMIO_EXIST      equ    00004000h       ; checks for existence of file
  598. MMIO_ALLOCBUF   equ    00010000h       ; mmioOpen() should allocate a buffer
  599. MMIO_GETTEMP    equ    00020000h       ; mmioOpen() should retrieve temp name
  600.  
  601. MMIO_DIRTY      equ    10000000h       ; I/O buffer is dirty
  602.  
  603.  
  604. ; read/write mode numbers (bit field MMIO_RWMODE)
  605. MMIO_READ       equ    00000000h       ; open file for reading only
  606. MMIO_WRITE      equ    00000001h       ; open file for writing only
  607. MMIO_READWRITE  equ    00000002h       ; open file for reading and writing
  608.  
  609. ; share mode numbers (bit field MMIO_SHAREMODE)
  610. MMIO_COMPAT     equ    00000000h       ; compatibility mode
  611. MMIO_EXCLUSIVE  equ    00000010h       ; exclusive-access mode
  612. MMIO_DENYWRITE  equ    00000020h       ; deny writing to other processes
  613. MMIO_DENYREAD   equ    00000030h       ; deny reading to other processes
  614. MMIO_DENYNONE   equ    00000040h       ; deny nothing to other processes
  615.  
  616. ; various MMIO flags
  617. MMIO_FHOPEN             equ    0010h   ; mmioClose: keep file handle open
  618. MMIO_EMPTYBUF           equ    0010h   ; mmioFlush: empty the I/O buffer
  619. MMIO_TOUPPER            equ    0010h   ; mmioStringToFOURCC: to u-case
  620. MMIO_INSTALLPROC    equ    00010000h   ; mmioInstallIOProc: install MMIOProc
  621. MMIO_GLOBALPROC     equ    10000000h   ; mmioInstallIOProc: install globally
  622. MMIO_REMOVEPROC     equ    00020000h   ; mmioInstallIOProc: remove MMIOProc
  623. MMIO_FINDPROC       equ    00040000h   ; mmioInstallIOProc: find an MMIOProc
  624. MMIO_FINDCHUNK          equ    0010h   ; mmioDescend: find a chunk by ID
  625. MMIO_FINDRIFF           equ    0020h   ; mmioDescend: find a LIST chunk
  626. MMIO_FINDLIST           equ    0040h   ; mmioDescend: find a RIFF chunk
  627. MMIO_CREATERIFF         equ    0020h   ; mmioCreateChunk: make a LIST chunk
  628. MMIO_CREATELIST         equ    0040h   ; mmioCreateChunk: make a RIFF chunk
  629.  
  630.  
  631. ; message numbers for MMIOPROC I/O procedure functions
  632. MMIOM_READ      equ    MMIO_READ       ; read
  633. MMIOM_WRITE    equ    MMIO_WRITE       ; write
  634. MMIOM_SEEK              equ    2       ; seek to a new position in file
  635. MMIOM_OPEN              equ    3       ; open file
  636. MMIOM_CLOSE             equ    4       ; close file
  637. MMIOM_WRITEFLUSH        equ    5       ; write and flush
  638. MMIOM_RENAME            equ    6       ; rename specified file
  639. MMIOM_USER         equ    8000h        ; beginning of user-defined messages
  640.  
  641. mmioFOURCC MACRO ch0,ch1,ch2,ch3
  642.         mov     al,ch0
  643.         mov     ah,ch1
  644.         mov     dl,ch2
  645.         mov     dh,ch3
  646.         ENDM
  647.  
  648. ; standard four character codes
  649. ; FOURCC_RIFF     equ    mmioFOURCC('R', 'I', 'F', 'F')
  650. ; FOURCC_LIST     equ    mmioFOURCC('L', 'I', 'S', 'T')
  651.  
  652. ; four character codes used to identify standard built-in I/O procedures
  653. ; FOURCC_DOS      equ    mmioFOURCC('D', 'O', 'S', ' ')
  654. ; FOURCC_MEM      equ    mmioFOURCC('M', 'E', 'M', ' ')
  655.  
  656. ; flags for mmioSeek()
  657. ifndef SEEK_SET
  658. SEEK_SET        equ    0               ; seek to an absolute position
  659. SEEK_CUR        equ    1               ; seek relative to current position
  660. SEEK_END        equ    2               ; seek relative to end of file
  661. endif  ;ifndef SEEK_SET
  662.  
  663. ; other constants
  664. MMIO_DEFAULTBUFFER      equ    8192    ; default buffer size
  665.  
  666. endif   ;ifndef MMNOMMIO
  667.  
  668. ifndef MMNOMCI
  669. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  670. ;
  671. ;                           MCI support
  672. ;
  673. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  674.  
  675. ; MCI error return values
  676. MCIERR_INVALID_DEVICE_ID        equ    (MCIERR_BASE + 1)
  677. MCIERR_UNRECOGNIZED_KEYWORD     equ    (MCIERR_BASE + 3)
  678. MCIERR_UNRECOGNIZED_COMMAND     equ    (MCIERR_BASE + 5)
  679. MCIERR_HARDWARE                 equ    (MCIERR_BASE + 6)
  680. MCIERR_INVALID_DEVICE_NAME      equ    (MCIERR_BASE + 7)
  681. MCIERR_OUT_OF_MEMORY            equ    (MCIERR_BASE + 8)
  682. MCIERR_DEVICE_OPEN              equ    (MCIERR_BASE + 9)
  683. MCIERR_CANNOT_LOAD_DRIVER       equ    (MCIERR_BASE + 10)
  684. MCIERR_MISSING_COMMAND_STRING   equ    (MCIERR_BASE + 11)
  685. MCIERR_PARAM_OVERFLOW           equ    (MCIERR_BASE + 12)
  686. MCIERR_MISSING_STRING_ARGUMENT  equ    (MCIERR_BASE + 13)
  687. MCIERR_BAD_INTEGER              equ    (MCIERR_BASE + 14)
  688. MCIERR_PARSER_INTERNAL          equ    (MCIERR_BASE + 15)
  689. MCIERR_DRIVER_INTERNAL          equ    (MCIERR_BASE + 16)
  690. MCIERR_MISSING_PARAMETER        equ    (MCIERR_BASE + 17)
  691. MCIERR_UNSUPPORTED_FUNCTION     equ    (MCIERR_BASE + 18)
  692. MCIERR_FILE_NOT_FOUND           equ    (MCIERR_BASE + 19)
  693. MCIERR_DEVICE_NOT_READY         equ    (MCIERR_BASE + 20)
  694. MCIERR_INTERNAL                 equ    (MCIERR_BASE + 21)
  695. MCIERR_DRIVER                   equ    (MCIERR_BASE + 22)
  696. MCIERR_CANNOT_USE_ALL           equ    (MCIERR_BASE + 23)
  697. MCIERR_MULTIPLE                 equ    (MCIERR_BASE + 24)
  698. MCIERR_EXTENSION_NOT_FOUND      equ    (MCIERR_BASE + 25)
  699. MCIERR_OUTOFRANGE               equ    (MCIERR_BASE + 26)
  700. MCIERR_FLAGS_NOT_COMPATIBLE     equ    (MCIERR_BASE + 28)
  701. MCIERR_FILE_NOT_SAVED           equ    (MCIERR_BASE + 30)
  702. MCIERR_DEVICE_TYPE_REQUIRED     equ    (MCIERR_BASE + 31)
  703. MCIERR_DEVICE_LOCKED            equ    (MCIERR_BASE + 32)
  704. MCIERR_DUPLICATE_ALIAS          equ    (MCIERR_BASE + 33)
  705. MCIERR_BAD_CONSTANT             equ    (MCIERR_BASE + 34)
  706. MCIERR_MUST_USE_SHAREABLE       equ    (MCIERR_BASE + 35)
  707. MCIERR_MISSING_DEVICE_NAME      equ    (MCIERR_BASE + 36)
  708. MCIERR_BAD_TIME_FORMAT          equ    (MCIERR_BASE + 37)
  709. MCIERR_NO_CLOSING_QUOTE         equ    (MCIERR_BASE + 38)
  710. MCIERR_DUPLICATE_FLAGS          equ    (MCIERR_BASE + 39)
  711. MCIERR_INVALID_FILE             equ    (MCIERR_BASE + 40)
  712. MCIERR_NULL_PARAMETER_BLOCK     equ    (MCIERR_BASE + 41)
  713. MCIERR_UNNAMED_RESOURCE         equ    (MCIERR_BASE + 42)
  714. MCIERR_NEW_REQUIRES_ALIAS       equ    (MCIERR_BASE + 43)
  715. MCIERR_NOTIFY_ON_AUTO_OPEN      equ    (MCIERR_BASE + 44)
  716. MCIERR_NO_ELEMENT_ALLOWED       equ    (MCIERR_BASE + 45)
  717. MCIERR_NONAPPLICABLE_FUNCTION   equ    (MCIERR_BASE + 46)
  718. MCIERR_ILLEGAL_FOR_AUTO_OPEN    equ    (MCIERR_BASE + 47)
  719. MCIERR_FILENAME_REQUIRED        equ    (MCIERR_BASE + 48)
  720. MCIERR_EXTRA_CHARACTERS         equ    (MCIERR_BASE + 49)
  721. MCIERR_DEVICE_NOT_INSTALLED     equ    (MCIERR_BASE + 50)
  722. MCIERR_GET_CD                   equ    (MCIERR_BASE + 51)
  723. MCIERR_SET_CD                   equ    (MCIERR_BASE + 52)
  724. MCIERR_SET_DRIVE                equ    (MCIERR_BASE + 53)
  725. MCIERR_DEVICE_LENGTH            equ    (MCIERR_BASE + 54)
  726. MCIERR_DEVICE_ORD_LENGTH        equ    (MCIERR_BASE + 55)
  727. MCIERR_NO_INTEGER               equ    (MCIERR_BASE + 56)
  728.  
  729. MCIERR_WAVE_OUTPUTSINUSE        equ    (MCIERR_BASE + 64)
  730. MCIERR_WAVE_SETOUTPUTINUSE      equ    (MCIERR_BASE + 65)
  731. MCIERR_WAVE_INPUTSINUSE         equ    (MCIERR_BASE + 66)
  732. MCIERR_WAVE_SETINPUTINUSE       equ    (MCIERR_BASE + 67)
  733. MCIERR_WAVE_OUTPUTUNSPECIFIED   equ    (MCIERR_BASE + 68)
  734. MCIERR_WAVE_INPUTUNSPECIFIED    equ    (MCIERR_BASE + 69)
  735. MCIERR_WAVE_OUTPUTSUNSUITABLE   equ    (MCIERR_BASE + 70)
  736. MCIERR_WAVE_SETOUTPUTUNSUITABLE equ    (MCIERR_BASE + 71)
  737. MCIERR_WAVE_INPUTSUNSUITABLE    equ    (MCIERR_BASE + 72)
  738. MCIERR_WAVE_SETINPUTUNSUITABLE  equ    (MCIERR_BASE + 73)
  739.  
  740. MCIERR_SEQ_DIV_INCOMPATIBLE     equ    (MCIERR_BASE + 80)
  741. MCIERR_SEQ_PORT_INUSE           equ    (MCIERR_BASE + 81)
  742. MCIERR_SEQ_PORT_NONEXISTENT     equ    (MCIERR_BASE + 82)
  743. MCIERR_SEQ_PORT_MAPNODEVICE     equ    (MCIERR_BASE + 83)
  744. MCIERR_SEQ_PORT_MISCERROR       equ    (MCIERR_BASE + 84)
  745. MCIERR_SEQ_TIMER                equ    (MCIERR_BASE + 85)
  746. MCIERR_SEQ_PORTUNSPECIFIED      equ    (MCIERR_BASE + 86)
  747. MCIERR_SEQ_NOMIDIPRESENT        equ    (MCIERR_BASE + 87)
  748.  
  749. MCIERR_NO_WINDOW                equ    (MCIERR_BASE + 90)
  750. MCIERR_CREATEWINDOW             equ    (MCIERR_BASE + 91)
  751. MCIERR_FILE_READ                equ    (MCIERR_BASE + 92)
  752. MCIERR_FILE_WRITE               equ    (MCIERR_BASE + 93)
  753.  
  754. ; all custom device driver errors must be >= than this value
  755. MCIERR_CUSTOM_DRIVER_BASE       equ    (MCIERR_BASE + 256)
  756.  
  757. ; MCI command message identifiers
  758. MCI_OPEN                        equ    0803h
  759. MCI_CLOSE                       equ    0804h
  760. MCI_ESCAPE                      equ    0805h
  761. MCI_PLAY                        equ    0806h
  762. MCI_SEEK                        equ    0807h
  763. MCI_STOP                        equ    0808h
  764. MCI_PAUSE                       equ    0809h
  765. MCI_INFO                        equ    080Ah
  766. MCI_GETDEVCAPS                  equ    080Bh
  767. MCI_SPIN                        equ    080Ch
  768. MCI_SET                         equ    080Dh
  769. MCI_STEP                        equ    080Eh
  770. MCI_RECORD                      equ    080Fh
  771. MCI_SYSINFO                     equ    0810h
  772. MCI_BREAK                       equ    0811h
  773. MCI_SOUND                       equ    0812h
  774. MCI_SAVE                        equ    0813h
  775. MCI_STATUS                      equ    0814h
  776. MCI_CUE                         equ    0830h
  777. MCI_REALIZE                     equ    0840h
  778. MCI_WINDOW                      equ    0841h
  779. MCI_PUT                         equ    0842h
  780. MCI_WHERE                       equ    0843h
  781. MCI_FREEZE                      equ    0844h
  782. MCI_UNFREEZE                    equ    0845h
  783. MCI_LOAD                        equ    0850h
  784. MCI_CUT                         equ    0851h
  785. MCI_COPY                        equ    0852h
  786. MCI_PASTE                       equ    0853h
  787. MCI_UPDATE                      equ    0854h
  788. MCI_RESUME                      equ    0855h
  789. MCI_DELETE                      equ    0856h
  790.  
  791. ; all custom MCI command messages must be >= than this value
  792. MCI_USER_MESSAGES               equ    (400h + DRV_MCI_FIRST)
  793.  
  794.  
  795. ; device ID for "all devices"
  796. MCI_ALL_DEVICE_ID               equ    0FFFFh
  797.  
  798. ; constants for predefined MCI device types
  799. MCI_DEVTYPE_VCR                 equ    (MCI_STRING_OFFSET + 1)
  800. MCI_DEVTYPE_VIDEODISC           equ    (MCI_STRING_OFFSET + 2)
  801. MCI_DEVTYPE_OVERLAY             equ    (MCI_STRING_OFFSET + 3)
  802. MCI_DEVTYPE_CD_AUDIO            equ    (MCI_STRING_OFFSET + 4)
  803. MCI_DEVTYPE_DAT                 equ    (MCI_STRING_OFFSET + 5)
  804. MCI_DEVTYPE_SCANNER             equ    (MCI_STRING_OFFSET + 6)
  805. MCI_DEVTYPE_ANIMATION           equ    (MCI_STRING_OFFSET + 7)
  806. MCI_DEVTYPE_DIGITAL_VIDEO       equ    (MCI_STRING_OFFSET + 8)
  807. MCI_DEVTYPE_OTHER               equ    (MCI_STRING_OFFSET + 9)
  808. MCI_DEVTYPE_WAVEFORM_AUDIO      equ    (MCI_STRING_OFFSET + 10)
  809. MCI_DEVTYPE_SEQUENCER           equ    (MCI_STRING_OFFSET + 11)
  810.  
  811. MCI_DEVTYPE_FIRST               equ    MCI_DEVTYPE_VCR
  812. MCI_DEVTYPE_LAST                equ    MCI_DEVTYPE_SEQUENCER
  813.  
  814. ; return values for 'status mode' command
  815. MCI_MODE_NOT_READY              equ    (MCI_STRING_OFFSET + 12)
  816. MCI_MODE_STOP                   equ    (MCI_STRING_OFFSET + 13)
  817. MCI_MODE_PLAY                   equ    (MCI_STRING_OFFSET + 14)
  818. MCI_MODE_RECORD                 equ    (MCI_STRING_OFFSET + 15)
  819. MCI_MODE_SEEK                   equ    (MCI_STRING_OFFSET + 16)
  820. MCI_MODE_PAUSE                  equ    (MCI_STRING_OFFSET + 17)
  821. MCI_MODE_OPEN                   equ    (MCI_STRING_OFFSET + 18)
  822.  
  823. ; constants used in 'set time format' and 'status time format' commands
  824. MCI_FORMAT_MILLISECONDS         equ    0
  825. MCI_FORMAT_HMS                  equ    1
  826. MCI_FORMAT_MSF                  equ    2
  827. MCI_FORMAT_FRAMES               equ    3
  828. MCI_FORMAT_SMPTE_24             equ    4
  829. MCI_FORMAT_SMPTE_25             equ    5
  830. MCI_FORMAT_SMPTE_30             equ    6
  831. MCI_FORMAT_SMPTE_30DROP         equ    7
  832. MCI_FORMAT_BYTES                equ    8
  833. MCI_FORMAT_SAMPLES              equ    9
  834. MCI_FORMAT_TMSF                 equ    10
  835.  
  836. ; flags for wParam of MM_MCINOTIFY message
  837. MCI_NOTIFY_SUCCESSFUL           equ    0001h
  838. MCI_NOTIFY_SUPERSEDED           equ    0002h
  839. MCI_NOTIFY_ABORTED              equ    0004h
  840. MCI_NOTIFY_FAILURE              equ    0008h
  841.  
  842.  
  843. ; common flags for dwFlags parameter of MCI command messages
  844. MCI_NOTIFY                      equ    00000001h
  845. MCI_WAIT                        equ    00000002h
  846. MCI_FROM                        equ    00000004h
  847. MCI_TO                          equ    00000008h
  848. MCI_TRACK                       equ    00000010h
  849.  
  850. ; flags for dwFlags parameter of MCI_OPEN command message
  851. MCI_OPEN_SHAREABLE              equ    00000100h
  852. MCI_OPEN_ELEMENT                equ    00000200h
  853. MCI_OPEN_ALIAS                  equ    00000400h
  854. MCI_OPEN_ELEMENT_ID             equ    00000800h
  855. MCI_OPEN_TYPE_ID                equ    00001000h
  856. MCI_OPEN_TYPE                   equ    00002000h
  857.  
  858. ; flags for dwFlags parameter of MCI_SEEK command message
  859. MCI_SEEK_TO_START               equ    00000100h
  860. MCI_SEEK_TO_END                 equ    00000200h
  861.  
  862. ; flags for dwFlags parameter of MCI_STATUS command message
  863. MCI_STATUS_ITEM                 equ    00000100h
  864. MCI_STATUS_START                equ    00000200h
  865.  
  866. ; flags for dwItem field of the MCI_STATUS_PARMS parameter block
  867. MCI_STATUS_LENGTH               equ    00000001h
  868. MCI_STATUS_POSITION             equ    00000002h
  869. MCI_STATUS_NUMBER_OF_TRACKS     equ    00000003h
  870. MCI_STATUS_MODE                 equ    00000004h
  871. MCI_STATUS_MEDIA_PRESENT        equ    00000005h
  872. MCI_STATUS_TIME_FORMAT          equ    00000006h
  873. MCI_STATUS_READY                equ    00000007h
  874. MCI_STATUS_CURRENT_TRACK        equ    00000008h
  875.  
  876. ; flags for dwFlags parameter of MCI_INFO command message
  877. MCI_INFO_PRODUCT                equ    00000100h
  878. MCI_INFO_FILE                   equ    00000200h
  879.  
  880. ; flags for dwFlags parameter of MCI_GETDEVCAPS command message
  881. MCI_GETDEVCAPS_ITEM             equ    00000100h
  882.  
  883. ; flags for dwItem field of the MCI_GETDEVCAPS_PARMS parameter block
  884. MCI_GETDEVCAPS_CAN_RECORD       equ    00000001h
  885. MCI_GETDEVCAPS_HAS_AUDIO        equ    00000002h
  886. MCI_GETDEVCAPS_HAS_VIDEO        equ    00000003h
  887. MCI_GETDEVCAPS_DEVICE_TYPE      equ    00000004h
  888. MCI_GETDEVCAPS_USES_FILES       equ    00000005h
  889. MCI_GETDEVCAPS_COMPOUND_DEVICE  equ    00000006h
  890. MCI_GETDEVCAPS_CAN_EJECT        equ    00000007h
  891. MCI_GETDEVCAPS_CAN_PLAY         equ    00000008h
  892. MCI_GETDEVCAPS_CAN_SAVE         equ    00000009h
  893.  
  894. ; flags for dwFlags parameter of MCI_SYSINFO command message
  895. MCI_SYSINFO_QUANTITY            equ    00000100h
  896. MCI_SYSINFO_OPEN                equ    00000200h
  897. MCI_SYSINFO_NAME                equ    00000400h
  898. MCI_SYSINFO_INSTALLNAME         equ    00000800h
  899.  
  900. ; flags for dwFlags parameter of MCI_SET command message
  901. MCI_SET_DOOR_OPEN               equ    00000100h
  902. MCI_SET_DOOR_CLOSED             equ    00000200h
  903. MCI_SET_TIME_FORMAT             equ    00000400h
  904. MCI_SET_AUDIO                   equ    00000800h
  905. MCI_SET_VIDEO                   equ    00001000h
  906. MCI_SET_ON                      equ    00002000h
  907. MCI_SET_OFF                     equ    00004000h
  908.  
  909. ; flags for dwAudio field of MCI_SET_PARMS or MCI_SEQ_SET_PARMS
  910. MCI_SET_AUDIO_ALL               equ    00000000h
  911. MCI_SET_AUDIO_LEFT              equ    00000001h
  912. MCI_SET_AUDIO_RIGHT             equ    00000002h
  913.  
  914. ; flags for dwFlags parameter of MCI_BREAK command message
  915. MCI_BREAK_KEY                   equ    00000100h
  916. MCI_BREAK_HWND                  equ    00000200h
  917. MCI_BREAK_OFF                   equ    00000400h
  918.  
  919. ; flags for dwFlags parameter of MCI_RECORD command message
  920. MCI_RECORD_INSERT               equ    00000100h
  921. MCI_RECORD_OVERWRITE            equ    00000200h
  922.  
  923. ; flags for dwFlags parameter of MCI_SOUND command message
  924. MCI_SOUND_NAME                  equ    00000100h
  925.  
  926. ; flags for dwFlags parameter of MCI_SAVE command message
  927. MCI_SAVE_FILE                   equ    00000100h
  928.  
  929. ; flags for dwFlags parameter of MCI_LOAD command message
  930. MCI_LOAD_FILE                   equ    00000100h
  931.  
  932. ; generic parameter block for MCI command messages with no special parameters
  933. MCI_GENERIC_PARMS struc
  934.     mcigen_dwCallback         dd    ?
  935. MCI_GENERIC_PARMS ends
  936.  
  937. ; parameter block for MCI_OPEN command message
  938. MCI_OPEN_PARMS struc
  939.     mciopen_dwCallback        dd    ?
  940.     mciopen_wDeviceID         dw    ?
  941.     mciopen_wReserved0        dw    ?
  942.     mciopen_lpstrDeviceType   dd    ?
  943.     mciopen_lpstrElementName  dd    ?
  944.     mciopen_lpstrAlias        dd    ?
  945. MCI_OPEN_PARMS ends
  946.  
  947. ; parameter block for MCI_PLAY command message
  948. MCI_PLAY_PARMS struc
  949.     mciplay_dwCallback        dd    ?
  950.     mciplay_dwFrom            dd    ?
  951.     mciplay_dwTo              dd    ?
  952. MCI_PLAY_PARMS ends
  953.  
  954. ; parameter block for MCI_SEEK command message
  955. MCI_SEEK_PARMS struc
  956.     mciseek_dwCallback        dd    ?
  957.     mciseek_dwTo              dd    ?
  958. MCI_SEEK_PARMS ends
  959.  
  960. ; parameter block for MCI_STATUS command message
  961. MCI_STATUS_PARMS struc
  962.     mcistat_dwCallback        dd    ?
  963.     mcistat_dwReturn          dd    ?
  964.     mcistat_dwItem            dd    ?
  965.     mcistat_dwTrack           dd    ?
  966. MCI_STATUS_PARMS ends
  967.  
  968. ; parameter block for MCI_INFO command message
  969. MCI_INFO_PARMS struc
  970.     mciinfo_dwCallback        dd    ?
  971.     mciinfo_lpstrReturn       dd    ?
  972.     mciinfo_dwRetSize         dd    ?
  973. MCI_INFO_PARMS ends
  974.  
  975. ; parameter block for MCI_GETDEVCAPS command message
  976. MCI_GETDEVCAPS_PARMS struc
  977.     mcigdc_dwCallback         dd    ?
  978.     mcigdc_dwReturn           dd    ?
  979.     mcigdc_dwItem             dd    ?
  980. MCI_GETDEVCAPS_PARMS ends
  981.  
  982. ; parameter block for MCI_SYSINFO command message
  983. MCI_SYSINFO_PARMS struc
  984.     mcisi_dwCallback          dd    ?
  985.     mcisi_lpstrReturn         dd    ?
  986.     mcisi_dwRetSize           dd    ?
  987.     mcisi_dwNumber            dd    ?
  988.     mcisi_wDeviceType         dw    ?
  989.     mcisi_wReserved0          dw    ?
  990. MCI_SYSINFO_PARMS ends
  991.  
  992. ; parameter block for MCI_SET command message
  993. MCI_SET_PARMS struc
  994.     mciset_dwCallback         dd    ?
  995.     mciset_dwTimeFormat       dd    ?
  996.     mciset_dwAudio            dd    ?
  997. MCI_SET_PARMS ends
  998.  
  999. ; parameter block for MCI_BREAK command message
  1000. MCI_BREAK_PARMS struc
  1001.     mcibreak_dwCallback       dd    ?
  1002.     mcibreak_nVirtKey         dw    ?
  1003.     mcibreak_wReserved0       dw    ?
  1004.     mcibreak_hwndBreak        dw    ?
  1005.     mcibreak_wReserved1       dw    ?
  1006. MCI_BREAK_PARMS ends
  1007.  
  1008. ; parameter block for MCI_SOUND command message
  1009. MCI_SOUND_PARMS struc
  1010.     mcisnd_dwCallback         dd    ?
  1011.     mcisnd_lpstrSoundName     dd    ?
  1012. MCI_SOUND_PARMS ends
  1013.  
  1014. ; parameter block for MCI_SAVE command message
  1015. MCI_SAVE_PARMS struc
  1016.     mcisave_dwCallback        dd    ?
  1017.     mcisave_lpfilename        dd    ?
  1018. MCI_SAVE_PARMS ends
  1019.  
  1020. ; parameter block for MCI_LOAD command message
  1021. MCI_LOAD_PARMS struc
  1022.     mciload_dwCallback        dd    ?
  1023.     mciload_lpfilename        dd    ?
  1024. MCI_LOAD_PARMS ends
  1025.  
  1026. ; parameter block for MCI_RECORD command message
  1027. MCI_RECORD_PARMS struc
  1028.     mcirec_dwCallback         dd    ?
  1029.     mcirec_dwFrom             dd    ?
  1030.     mcirec_dwTo               dd    ?
  1031. MCI_RECORD_PARMS ends
  1032.  
  1033.  
  1034. ;
  1035. ; MCI extensions for videodisc devices
  1036. ;
  1037.  
  1038. ; flag for dwReturn field of MCI_STATUS_PARMS
  1039. ; MCI_STATUS command, (dwItem == MCI_STATUS_MODE)
  1040. MCI_VD_MODE_PARK                equ    (MCI_VD_OFFSET + 1)
  1041.  
  1042. ; flag for dwReturn field of MCI_STATUS_PARMS
  1043. ; MCI_STATUS command, (dwItem == MCI_VD_STATUS_MEDIA_TYPE)
  1044. MCI_VD_MEDIA_CLV                equ    (MCI_VD_OFFSET + 2)
  1045. MCI_VD_MEDIA_CAV                equ    (MCI_VD_OFFSET + 3)
  1046. MCI_VD_MEDIA_OTHER              equ    (MCI_VD_OFFSET + 4)
  1047.  
  1048. MCI_VD_FORMAT_TRACK             equ    4001h
  1049.  
  1050. ; flags for dwFlags parameter of MCI_PLAY command message
  1051. MCI_VD_PLAY_REVERSE             equ    00010000h
  1052. MCI_VD_PLAY_FAST                equ    00020000h
  1053. MCI_VD_PLAY_SPEED               equ    00040000h
  1054. MCI_VD_PLAY_SCAN                equ    00080000h
  1055. MCI_VD_PLAY_SLOW                equ    00100000h
  1056.  
  1057. ; flag for dwFlags parameter of MCI_SEEK command message
  1058. MCI_VD_SEEK_REVERSE             equ    00010000h
  1059.  
  1060. ; flags for dwItem field of MCI_STATUS_PARMS parameter block
  1061. MCI_VD_STATUS_SPEED             equ    00004002h
  1062. MCI_VD_STATUS_FORWARD           equ    00004003h
  1063. MCI_VD_STATUS_MEDIA_TYPE        equ    00004004h
  1064. MCI_VD_STATUS_SIDE              equ    00004005h
  1065. MCI_VD_STATUS_DISC_SIZE         equ    00004006h
  1066.  
  1067. ; flags for dwFlags parameter of MCI_GETDEVCAPS command message
  1068. MCI_VD_GETDEVCAPS_CLV           equ    00010000h
  1069. MCI_VD_GETDEVCAPS_CAV           equ    00020000h
  1070.  
  1071. MCI_VD_SPIN_UP                  equ    0001h
  1072. MCI_VD_SPIN_DOWN                equ    0002h
  1073.  
  1074. ; flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block
  1075. MCI_VD_GETDEVCAPS_CAN_REVERSE   equ    00004002h
  1076. MCI_VD_GETDEVCAPS_FAST_RATE     equ    00004003h
  1077. MCI_VD_GETDEVCAPS_SLOW_RATE     equ    00004004h
  1078. MCI_VD_GETDEVCAPS_NORMAL_RATE   equ    00004005h
  1079.  
  1080. ; flags for the dwFlags parameter of MCI_STEP command message
  1081. MCI_VD_STEP_FRAMES              equ    00010000h
  1082. MCI_VD_STEP_REVERSE             equ    00020000h
  1083.  
  1084. ; flag for the MCI_ESCAPE command message
  1085. MCI_VD_ESCAPE_STRING            equ    00000100h
  1086.  
  1087. ; parameter block for MCI_PLAY command message
  1088. MCI_VD_PLAY_PARMS struc
  1089.     mcivdplay_dwCallback      dd    ?
  1090.     mcivdplay_dwFrom          dd    ?
  1091.     mcivdplay_dwTo            dd    ?
  1092.     mcivdplay_dwSpeed         dd    ?
  1093. MCI_VD_PLAY_PARMS ends
  1094.  
  1095. ; parameter block for MCI_STEP command message
  1096. MCI_VD_STEP_PARMS struc
  1097.     mcivdstep_dwCallback      dd    ?
  1098.     mcivdstep_dwFrames        dd    ?
  1099. MCI_VD_STEP_PARMS ends
  1100.  
  1101. ; parameter block for MCI_ESCAPE command message
  1102. MCI_VD_ESCAPE_PARMS struc
  1103.     mcivcesc_dwCallback       dd    ?
  1104.     mcivcesc_lpstrCommand     dd    ?
  1105. MCI_VD_ESCAPE_PARMS ends
  1106.  
  1107.  
  1108. ;
  1109. ; MCI extensions for waveform audio devices
  1110. ;
  1111.  
  1112. ; flags for the dwFlags parameter of MCI_OPEN command message
  1113. MCI_WAVE_OPEN_BUFFER            equ    00010000h
  1114.  
  1115. ; flags for the dwFlags parameter of MCI_SET command message
  1116. MCI_WAVE_SET_FORMATTAG          equ    00010000h
  1117. MCI_WAVE_SET_CHANNELS           equ    00020000h
  1118. MCI_WAVE_SET_SAMPLESPERSEC      equ    00040000h
  1119. MCI_WAVE_SET_AVGBYTESPERSEC     equ    00080000h
  1120. MCI_WAVE_SET_BLOCKALIGN         equ    00100000h
  1121. MCI_WAVE_SET_BITSPERSAMPLE      equ    00200000h
  1122.  
  1123. ; flags for the dwFlags parameter of MCI_STATUS, MCI_SET command messages
  1124. MCI_WAVE_INPUT                  equ    00400000h
  1125. MCI_WAVE_OUTPUT                 equ    00800000h
  1126.  
  1127. ; flags for the dwItem field of MCI_STATUS_PARMS parameter block
  1128. MCI_WAVE_STATUS_FORMATTAG       equ    00004001h
  1129. MCI_WAVE_STATUS_CHANNELS        equ    00004002h
  1130. MCI_WAVE_STATUS_SAMPLESPERSEC   equ    00004003h
  1131. MCI_WAVE_STATUS_AVGBYTESPERSEC  equ    00004004h
  1132. MCI_WAVE_STATUS_BLOCKALIGN      equ    00004005h
  1133. MCI_WAVE_STATUS_BITSPERSAMPLE   equ    00004006h
  1134. MCI_WAVE_STATUS_LEVEL           equ    00004007h
  1135.  
  1136. ; flags for the dwFlags parameter of MCI_SET command message
  1137. MCI_WAVE_SET_ANYINPUT           equ    04000000h
  1138. MCI_WAVE_SET_ANYOUTPUT          equ    08000000h
  1139.  
  1140. ; flags for the dwFlags parameter of MCI_GETDEVCAPS command message
  1141. MCI_WAVE_GETDEVCAPS_INPUTS      equ    00004001h
  1142. MCI_WAVE_GETDEVCAPS_OUTPUTS     equ    00004002h
  1143.  
  1144. ; parameter block for MCI_OPEN command message
  1145. MCI_WAVE_OPEN_PARMS struc
  1146.     mciwopen_dwCallback       dd    ?
  1147.     mciwopen_wDeviceID        dw    ?
  1148.     mciwopen_wReserved0       dw    ?
  1149.     mciwopen_lpstrDeviceType  dd    ?
  1150.     mciwopen_lpstrElementName dd    ?
  1151.     mciwopen_lpstrAlias       dd    ?
  1152.     mciwopen_dwBufferSeconds  dd    ?
  1153. MCI_WAVE_OPEN_PARMS ends
  1154.  
  1155. ; parameter block for MCI_DELETE command message
  1156. MCI_WAVE_DELETE_PARMS struc
  1157.     mciwdel_dwCallback        dd    ?
  1158.     mciwdel_dwFrom            dd    ?
  1159.     mciwdel_dwTo              dd    ?
  1160. MCI_WAVE_DELETE_PARMS ends
  1161.  
  1162. ; parameter block for MCI_SET command message
  1163. MCI_WAVE_SET_PARMS struc
  1164.     mciwset_dwCallback        dd    ?
  1165.     mciwset_dwTimeFormat      dd    ?
  1166.     mciwset_dwAudio           dd    ?
  1167.     mciwset_wInput            dw    ?
  1168.     mciwset_wReserved0        dw    ?
  1169.     mciwset_wOutput           dw    ?
  1170.     mciwset_wReserved1        dw    ?
  1171.     mciwset_wFormatTag        dw    ?
  1172.     mciwset_wReserved2        dw    ?
  1173.     mciwset_nChannels         dw    ?
  1174.     mciwset_wReserved3        dw    ?
  1175.     mciwset_nSamplesPerSec    dw    ?
  1176.     mciwset_nAvgBytesPerSec   dw    ?
  1177.     mciwset_nBlockAlign       dw    ?
  1178.     mciwset_wReserved4        dw    ?
  1179.     mciwset_wBitsPerSample    dw    ?
  1180.     mciwset_wReserved5        dw    ?
  1181. MCI_WAVE_SET_PARMS ends
  1182.  
  1183.  
  1184. ;
  1185. ; MCI extensions for MIDI sequencer devices
  1186. ;
  1187.  
  1188. ; flags for the dwReturn field of MCI_STATUS_PARMS parameter block
  1189. ; MCI_STATUS command, (dwItem == MCI_SEQ_STATUS_DIVTYPE)
  1190. MCI_SEQ_DIV_PPQN            equ    (0 + MCI_SEQ_OFFSET)
  1191. MCI_SEQ_DIV_SMPTE_24        equ    (1 + MCI_SEQ_OFFSET)
  1192. MCI_SEQ_DIV_SMPTE_25        equ    (2 + MCI_SEQ_OFFSET)
  1193. MCI_SEQ_DIV_SMPTE_30DROP    equ    (3 + MCI_SEQ_OFFSET)
  1194. MCI_SEQ_DIV_SMPTE_30        equ    (4 + MCI_SEQ_OFFSET)
  1195.  
  1196. ; flags for the dwMaster field of MCI_SEQ_SET_PARMS parameter block
  1197. ; MCI_SET command, (dwFlags == MCI_SEQ_SET_MASTER)
  1198. MCI_SEQ_FORMAT_SONGPTR      equ    4001h
  1199. MCI_SEQ_FILE                equ    4002h
  1200. MCI_SEQ_MIDI                equ    4003h
  1201. MCI_SEQ_SMPTE               equ    4004h
  1202. MCI_SEQ_NONE                equ    65533
  1203.  
  1204. ; flags for the dwItem field of MCI_STATUS_PARMS parameter block
  1205. MCI_SEQ_STATUS_TEMPO            equ    00004002h
  1206. MCI_SEQ_STATUS_PORT             equ    00004003h
  1207. MCI_SEQ_STATUS_SLAVE            equ    00004007h
  1208. MCI_SEQ_STATUS_MASTER           equ    00004008h
  1209. MCI_SEQ_STATUS_OFFSET           equ    00004009h
  1210. MCI_SEQ_STATUS_DIVTYPE          equ    0000400Ah
  1211.  
  1212. ; flags for the dwFlags parameter of MCI_SET command message
  1213. MCI_SEQ_SET_TEMPO               equ    00010000h
  1214. MCI_SEQ_SET_PORT                equ    00020000h
  1215. MCI_SEQ_SET_SLAVE               equ    00040000h
  1216. MCI_SEQ_SET_MASTER              equ    00080000h
  1217. MCI_SEQ_SET_OFFSET              equ    01000000h
  1218.  
  1219. ; parameter block for MCI_SET command message
  1220. MCI_SEQ_SET_PARMS struc
  1221.     mcisset_dwCallback        dd    ?
  1222.     mcisset_dwTimeFormat      dd    ?
  1223.     mcisset_dwAudio           dd    ?
  1224.     mcisset_dwTempo           dd    ?
  1225.     mcisset_dwPort            dd    ?
  1226.     mcisset_dwSlave           dd    ?
  1227.     mcisset_dwMaster          dd    ?
  1228.     mcisset_dwOffset          dd    ?
  1229. MCI_SEQ_SET_PARMS ends
  1230.  
  1231.  
  1232. ;
  1233. ; MCI extensions for animation devices
  1234. ;
  1235.  
  1236. ; flags for dwFlags parameter of MCI_OPEN command message
  1237. MCI_ANIM_OPEN_WS                equ    00010000h
  1238. MCI_ANIM_OPEN_PARENT            equ    00020000h
  1239. MCI_ANIM_OPEN_NOSTATIC          equ    00040000h
  1240.  
  1241. ; flags for dwFlags parameter of MCI_PLAY command message
  1242. MCI_ANIM_PLAY_SPEED             equ    00010000h
  1243. MCI_ANIM_PLAY_REVERSE           equ    00020000h
  1244. MCI_ANIM_PLAY_FAST              equ    00040000h
  1245. MCI_ANIM_PLAY_SLOW              equ    00080000h
  1246. MCI_ANIM_PLAY_SCAN              equ    00100000h
  1247.  
  1248. ; flags for dwFlags parameter of MCI_STEP command message
  1249. MCI_ANIM_STEP_REVERSE           equ    00010000h
  1250. MCI_ANIM_STEP_FRAMES            equ    00020000h
  1251.  
  1252. ; flags for dwItem field of MCI_STATUS_PARMS parameter block
  1253. MCI_ANIM_STATUS_SPEED           equ    00004001h
  1254. MCI_ANIM_STATUS_FORWARD         equ    00004002h
  1255. MCI_ANIM_STATUS_HWND            equ    00004003h
  1256. MCI_ANIM_STATUS_HPAL            equ    00004004h
  1257. MCI_ANIM_STATUS_STRETCH         equ    00004005h
  1258.  
  1259. ; flags for the dwFlags parameter of MCI_INFO command message
  1260. MCI_ANIM_INFO_TEXT              equ    00010000h
  1261.  
  1262. ; flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block
  1263. MCI_ANIM_GETDEVCAPS_CAN_REVERSE equ    00004001h
  1264. MCI_ANIM_GETDEVCAPS_FAST_RATE   equ    00004002h
  1265. MCI_ANIM_GETDEVCAPS_SLOW_RATE   equ    00004003h
  1266. MCI_ANIM_GETDEVCAPS_NORMAL_RATE equ    00004004h
  1267. MCI_ANIM_GETDEVCAPS_PALETTES    equ    00004006h
  1268. MCI_ANIM_GETDEVCAPS_CAN_STRETCH equ    00004007h
  1269. MCI_ANIM_GETDEVCAPS_MAX_WINDOWS equ    00004008h
  1270.  
  1271. ; flags for the MCI_REALIZE command message
  1272. MCI_ANIM_REALIZE_NORM           equ    00010000h
  1273. MCI_ANIM_REALIZE_BKGD           equ    00020000h
  1274.  
  1275. ; flags for dwFlags parameter of MCI_WINDOW command message
  1276. MCI_ANIM_WINDOW_HWND            equ    00010000h
  1277. MCI_ANIM_WINDOW_STATE           equ    00040000h
  1278. MCI_ANIM_WINDOW_TEXT            equ    00080000h
  1279. MCI_ANIM_WINDOW_ENABLE_STRETCH  equ    00100000h
  1280. MCI_ANIM_WINDOW_DISABLE_STRETCH equ    00200000h
  1281.  
  1282. ; flags for hWnd field of MCI_ANIM_WINDOW_PARMS parameter block
  1283. ; MCI_WINDOW command message, (dwFlags == MCI_ANIM_WINDOW_HWND)
  1284. MCI_ANIM_WINDOW_DEFAULT         equ    00000000h
  1285.  
  1286. ; flags for dwFlags parameter of MCI_PUT command message
  1287. MCI_ANIM_RECT                   equ    00010000h
  1288. MCI_ANIM_PUT_SOURCE             equ    00020000h
  1289. MCI_ANIM_PUT_DESTINATION        equ    00040000h
  1290.  
  1291. ; flags for dwFlags parameter of MCI_WHERE command message
  1292. MCI_ANIM_WHERE_SOURCE           equ    00020000h
  1293. MCI_ANIM_WHERE_DESTINATION      equ    00040000h
  1294.  
  1295. ; flags for dwFlags parameter of MCI_UPDATE command message
  1296. MCI_ANIM_UPDATE_HDC             equ    00020000h
  1297.  
  1298. ; parameter block for MCI_OPEN command message
  1299. MCI_ANIM_OPEN_PARMS struc
  1300.     mciaopen_dwCallback       dd    ?
  1301.     mciaopen_wDeviceID        dw    ?
  1302.     mciaopen_wReserved0       dw    ?
  1303.     mciaopen_lpstrDeviceType  dd    ?
  1304.     mciaopen_lpstrElementName dd    ?
  1305.     mciaopen_lpstrAlias       dd    ?
  1306.     mciaopen_dwStyle          dd    ?
  1307.     mciaopen_hWndParent       dw    ?
  1308.     mciaopen_wReserved1       dw    ?
  1309. MCI_ANIM_OPEN_PARMS ends
  1310.  
  1311. ; parameter block for MCI_PLAY command message
  1312. MCI_ANIM_PLAY_PARMS struc
  1313.     mciaplay_dwCallback       dd    ?
  1314.     mciaplay_dwFrom           dd    ?
  1315.     mciaplay_dwTo             dd    ?
  1316.     mciaplay_dwSpeed          dd    ?
  1317. MCI_ANIM_PLAY_PARMS ends
  1318.  
  1319. ; parameter block for MCI_STEP command message
  1320. MCI_ANIM_STEP_PARMS struc
  1321.     mciastep_dwCallback       dd    ?
  1322.     mciastep_dwFrames         dd    ?
  1323. MCI_ANIM_STEP_PARMS ends
  1324.  
  1325. ; parameter block for MCI_WINDOW command message
  1326. MCI_ANIM_WINDOW_PARMS struc
  1327.     mciawin_dwCallback        dd    ?
  1328.     mciawin_hWnd              dw    ?
  1329.     mciawin_wReserved1        dw    ?
  1330.     mciawin_nCmdShow          dw    ?
  1331.     mciawin_wReserved2        dw    ?
  1332.     mciawin_lpstrText         dd    ?
  1333. MCI_ANIM_WINDOW_PARMS ends
  1334.  
  1335. ; parameter block for MCI_PUT, MCI_UPDATE, MCI_WHERE command messages
  1336. MCI_ANIM_RECT_PARMS struc
  1337.     mciarect_dwCallback       dd    ?
  1338. ifdef MCI_USE_OFFEXT
  1339.     mciarect_ptOffset         db (SIZE POINT) dup (?)
  1340.     mciarect_ptExtent         db (SIZE POINT) dup (?)
  1341. else    ;ifdef MCI_USE_OFFEXT
  1342.     mciarect_rc               db (SIZE RECT) dup (?)
  1343. endif  ;ifdef MCI_USE_OFFEXT
  1344. MCI_ANIM_RECT_PARMS ends
  1345.  
  1346. ; parameter block for MCI_UPDATE PARMS
  1347. MCI_ANIM_UPDATE_PARMS struc
  1348.     mciaupd_dwCallback        dd    ?
  1349.     mciaupd_rc                db (SIZE RECT) dup (?)
  1350.     mciaupd_hDC               dw    ?
  1351. MCI_ANIM_UPDATE_PARMS ends
  1352.  
  1353.  
  1354. ;
  1355. ; MCI extensions for video overlay devices
  1356. ;
  1357.  
  1358. ; flags for dwFlags parameter of MCI_OPEN command message
  1359. MCI_OVLY_OPEN_WS                equ    00010000h
  1360. MCI_OVLY_OPEN_PARENT            equ    00020000h
  1361.  
  1362. ; flags for dwFlags parameter of MCI_STATUS command message
  1363. MCI_OVLY_STATUS_HWND            equ    00004001h
  1364. MCI_OVLY_STATUS_STRETCH         equ    00004002h
  1365.  
  1366. ; flags for dwFlags parameter of MCI_INFO command message
  1367. MCI_OVLY_INFO_TEXT              equ    00010000h
  1368.  
  1369. ; flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block
  1370. MCI_OVLY_GETDEVCAPS_CAN_STRETCH equ    00004001h
  1371. MCI_OVLY_GETDEVCAPS_CAN_FREEZE  equ    00004002h
  1372. MCI_OVLY_GETDEVCAPS_MAX_WINDOWS equ    00004003h
  1373.  
  1374. ; flags for dwFlags parameter of MCI_WINDOW command message
  1375. MCI_OVLY_WINDOW_HWND            equ    00010000h
  1376. MCI_OVLY_WINDOW_STATE           equ    00040000h
  1377. MCI_OVLY_WINDOW_TEXT            equ    00080000h
  1378. MCI_OVLY_WINDOW_ENABLE_STRETCH  equ    00100000h
  1379. MCI_OVLY_WINDOW_DISABLE_STRETCH equ    00200000h
  1380.  
  1381. ; flags for hWnd parameter of MCI_OVLY_WINDOW_PARMS parameter block
  1382. MCI_OVLY_WINDOW_DEFAULT         equ    00000000h
  1383.  
  1384. ; flags for dwFlags parameter of MCI_PUT command message
  1385. MCI_OVLY_RECT                   equ    00010000h
  1386. MCI_OVLY_PUT_SOURCE             equ    00020000h
  1387. MCI_OVLY_PUT_DESTINATION        equ    00040000h
  1388. MCI_OVLY_PUT_FRAME              equ    00080000h
  1389. MCI_OVLY_PUT_VIDEO              equ    00100000h
  1390.  
  1391. ; flags for dwFlags parameter of MCI_WHERE command message
  1392. MCI_OVLY_WHERE_SOURCE           equ    00020000h
  1393. MCI_OVLY_WHERE_DESTINATION      equ    00040000h
  1394. MCI_OVLY_WHERE_FRAME            equ    00080000h
  1395. MCI_OVLY_WHERE_VIDEO            equ    00100000h
  1396.  
  1397. ; parameter block for MCI_OPEN command message
  1398. MCI_OVLY_OPEN_PARMS struc
  1399.     mcioopen_dwCallback       dd    ?
  1400.     mcioopen_wDeviceID        dw    ?
  1401.     mcioopen_wReserved0       dw    ?
  1402.     mcioopen_lpstrDeviceType  dd    ?
  1403.     mcioopen_lpstrElementName dd    ?
  1404.     mcioopen_lpstrAlias       dd    ?
  1405.     mcioopen_dwStyle          dd    ?
  1406.     mcioopen_hWndParent       dw    ?
  1407.     mcioopen_wReserved1       dw    ?
  1408. MCI_OVLY_OPEN_PARMS ends
  1409.  
  1410. ; parameter block for MCI_WINDOW command message
  1411. MCI_OVLY_WINDOW_PARMS struc
  1412.     mciowin_dwCallback        dd    ?
  1413.     mciowin_hWnd              dw    ?
  1414.     mciowin_wReserved1        dw    ?
  1415.     mciowin_nCmdShow          dw    ?
  1416.     mciowin_wReserved2        dw    ?
  1417.     mciowin_lpstrText         dd    ?
  1418. MCI_OVLY_WINDOW_PARMS ends
  1419.  
  1420. ; parameter block for MCI_PUT, MCI_UPDATE, and MCI_WHERE command messages
  1421. MCI_OVLY_RECT_PARMS struc
  1422.     mciorect_dwCallback       dd    ?
  1423. ifdef MCI_USE_OFFEXT
  1424.     mciorect_ptOffset         db (SIZE POINT) dup (?)
  1425.     mciorect_ptExtent         db (SIZE POINT) dup (?)
  1426. else    ;ifdef MCI_USE_OFFEXT
  1427.     mciorect_rc               db (SIZE RECT) dup (?)
  1428. endif  ;ifdef MCI_USE_OFFEXT
  1429. MCI_OVLY_RECT_PARMS ends
  1430.  
  1431. ; parameter block for MCI_SAVE command message
  1432. MCI_OVLY_SAVE_PARMS struc
  1433.     mciosave_dwCallback       dd    ?
  1434.     mciosave_lpfilename       dd    ?
  1435.     mciosave_rc               db (SIZE RECT) dup (?)
  1436. MCI_OVLY_SAVE_PARMS ends
  1437.  
  1438. ; parameter block for MCI_LOAD command message
  1439. MCI_OVLY_LOAD_PARMS struc
  1440.     mcioload_dwCallback       dd    ?
  1441.     mcioload_lpfilename       dd    ?
  1442.     mcioload_rc               db (SIZE RECT) dup (?)
  1443. MCI_OVLY_LOAD_PARMS ends
  1444.  
  1445. endif  ;ifndef MMNOMCI
  1446.  
  1447. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1448. ;
  1449. ;                       DISPLAY Driver extensions
  1450. ;
  1451. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1452.  
  1453. ifndef C1_TRANSPARENT
  1454.     CAPS1           equ    94          ; other caps
  1455.     C1_TRANSPARENT  equ    0001h       ; new raster cap
  1456.     NEWTRANSPARENT  equ    3           ; use with SetBkMode()
  1457.  
  1458.     QUERYROPSUPPORT equ    40          ; use to determine ROP support
  1459. endif  ;ifndef C1_TRANSPARENT
  1460.  
  1461. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1462. ;
  1463. ;                       DIB Driver extensions
  1464. ;
  1465. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1466.  
  1467. SELECTDIB       equ    41                      ; DIB.DRV select dib escape
  1468. DIBINDEX MACRO a
  1469.         mov     ax,a
  1470.         mov     dx,10ffh
  1471.         ENDM
  1472.  
  1473.  
  1474. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1475. ;
  1476. ;                       ScreenSaver support
  1477. ;
  1478. ;   The current application will receive a syscommand of SC_SCREENSAVE just
  1479. ;   before the screen saver is invoked.  If the app wishes to prevent a
  1480. ;   screen save, return non-zero value, otherwise call DefWindowProc().
  1481. ;
  1482. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1483.  
  1484. ifndef SC_SCREENSAVE
  1485.  
  1486.     SC_SCREENSAVE   equ    0F140h
  1487.  
  1488. endif  ;ifndef SC_SCREENSAVE
  1489.