home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c500 / 5.ddi / SRC_INC.WPK / MMSYSTEM.INC < prev    next >
Encoding:
Text File  |  1992-05-28  |  58.9 KB  |  1,485 lines

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