mmsystem.inc
来自「用于查询PC机上的USB端口是否有设备挂接上」· INC 代码 · 共 1,263 行 · 第 1/3 页
INC
1,263 行
; general constants
MAXPNAMELEN EQU 32 ; max product name length (including NULL)
MAXERRORLENGTH EQU 256 ; max error text length (including NULL)
MAX_JOYSTICKOEMVXDNAME EQU 260 ; max oem vxd name length (including NULL)
MMTIME STRUC
mmt_wType DW ?
mmt_TimeUnion DD ?
MMTIME ENDS
SMPTE STRUC
smpte_hour DB ?
smpte_min DB ?
smpte_sec DB ?
smpte_frame DB ?
smpte_fps DB ?
smpte_reserved DB ?
SMPTE ENDS
; types for wType field in MMTIME struct
TIME_MS EQU 0001H ; time in milliseconds
TIME_SAMPLES EQU 0002H ; number of wave samples
TIME_BYTES EQU 0004H ; current byte offset
TIME_SMPTE EQU 0008H ; SMPTE time
TIME_MIDI EQU 0010H ; MIDI time
TIME_TICKS EQU 0020H ; Ticks within MIDI stream
MM_JOY1MOVE EQU 3A0H ; joystick
MM_JOY2MOVE EQU 3A1H
MM_JOY1ZMOVE EQU 3A2H
MM_JOY2ZMOVE EQU 3A3H
MM_JOY1BUTTONDOWN EQU 3B5H
MM_JOY2BUTTONDOWN EQU 3B6H
MM_JOY1BUTTONUP EQU 3B7H
MM_JOY2BUTTONUP EQU 3B8H
MM_MCINOTIFY EQU 3B9H ; MCI
MM_WOM_OPEN EQU 3BBH ; waveform output
MM_WOM_CLOSE EQU 3BCH
MM_WOM_DONE EQU 3BDH
MM_WIM_OPEN EQU 3BEH ; waveform input
MM_WIM_CLOSE EQU 3BFH
MM_WIM_DATA EQU 3C0H
MM_MIM_OPEN EQU 3C1H ; MIDI input
MM_MIM_CLOSE EQU 3C2H
MM_MIM_DATA EQU 3C3H
MM_MIM_LONGDATA EQU 3C4H
MM_MIM_ERROR EQU 3C5H
MM_MIM_LONGERROR EQU 3C6H
MM_MOM_OPEN EQU 3C7H ; MIDI output
MM_MOM_CLOSE EQU 3C8H
MM_MOM_DONE EQU 3C9H
MMSYSERR_BASE EQU 0
WAVERR_BASE EQU 32
MIDIERR_BASE EQU 64
TIMERR_BASE EQU 96
JOYERR_BASE EQU 160
MCIERR_BASE EQU 256
MIXERR_BASE EQU 1024
MCI_STRING_OFFSET EQU 512
MCI_VD_OFFSET EQU 1024
MCI_CD_OFFSET EQU 1088
MCI_WAVE_OFFSET EQU 1152
MCI_SEQ_OFFSET EQU 1216
;***************************************************************************
; General error return values
;*************************************************************************
; general error return values
MMSYSERR_NOERROR EQU 0 ; no error
MMSYSERR_ERROR EQU (MMSYSERR_BASE+1) ; unspecified error
MMSYSERR_BADDEVICEID EQU (MMSYSERR_BASE+2) ; device ID out of range
MMSYSERR_NOTENABLED EQU (MMSYSERR_BASE+3) ; driver failed enable
MMSYSERR_ALLOCATED EQU (MMSYSERR_BASE+4) ; device already allocated
MMSYSERR_INVALHANDLE EQU (MMSYSERR_BASE+5) ; device handle is invalid
MMSYSERR_NODRIVER EQU (MMSYSERR_BASE+6) ; no device driver present
MMSYSERR_NOMEM EQU (MMSYSERR_BASE+7) ; memory allocation error
MMSYSERR_NOTSUPPORTED EQU (MMSYSERR_BASE+8) ; function isn't supported
MMSYSERR_BADERRNUM EQU (MMSYSERR_BASE+9) ; error value out of range
MMSYSERR_INVALFLAG EQU (MMSYSERR_BASE+10) ; invalid flag passed
MMSYSERR_INVALPARAM EQU (MMSYSERR_BASE+11) ; invalid parameter passed
MMSYSERR_HANDLEBUSY EQU (MMSYSERR_BASE+12) ; handle being used
; simultaneously on another
; thread (eg callback)
MMSYSERR_INVALIDALIAS EQU (MMSYSERR_BASE+13) ; specified alias not found
MMSYSERR_BADDB EQU (MMSYSERR_BASE+14) ; bad registry database
MMSYSERR_KEYNOTFOUND EQU (MMSYSERR_BASE+15) ; registry key not found
MMSYSERR_READERROR EQU (MMSYSERR_BASE+16) ; registry read error
MMSYSERR_WRITEERROR EQU (MMSYSERR_BASE+17) ; registry write error
MMSYSERR_DELETEERROR EQU (MMSYSERR_BASE+18) ; registry delete error
MMSYSERR_VALNOTFOUND EQU (MMSYSERR_BASE+19) ; registry value not found
MMSYSERR_NODRIVERCB EQU (MMSYSERR_BASE+20) ; driver does not call DriverCallback
MMSYSERR_LASTERROR EQU (MMSYSERR_BASE+20) ; last error in range
ifndef MMNODRV ;both
ifndef DRV_RESERVED
DRV_RESERVED EQU 0800H
DRV_USER EQU 4000H
endif
DRV_MCI_FIRST EQU DRV_RESERVED
DRV_MCI_LAST EQU (DRV_RESERVED+0FFFH)
endif ;both; ifndef MMNODRV
;***************************************************************************
; Driver callback support
;*************************************************************************
; flags used with waveOutOpen(), waveInOpen(), midiInOpen(), and
; midiOutOpen() to specify the type of the dwCallback parameter.
CALLBACK_TYPEMASK EQU 00070000H ; callback type mask
CALLBACK_NULL EQU 00000000H ; no callback
CALLBACK_WINDOW EQU 00010000H ; dwCallback is a HWND
CALLBACK_TASK EQU 00020000H ; dwCallback is a HTASK
CALLBACK_FUNCTION EQU 00030000H ; dwCallback is a FARPROC
ifdef _WIN32
CALLBACK_THREAD EQU (CALLBACK_TASK); thread ID replaces 16 bit task
CALLBACK_EVENT EQU 00050000H ; dwCallback is an EVENT Handle
endif
SND_SYNC EQU 0000H ; play synchronously (default)
SND_ASYNC EQU 0001H ; play asynchronously
SND_NODEFAULT EQU 0002H ; silence (!default) if sound not found
SND_MEMORY EQU 0004H ; pszSound points to a memory file
SND_LOOP EQU 0008H ; loop the sound until next sndPlaySound
SND_NOSTOP EQU 0010H ; don't stop any currently playing sound
ifndef MMNOWAVE ;both
;***************************************************************************
; Waveform audio support
;*************************************************************************
; waveform audio error return values
WAVERR_BADFORMAT EQU (WAVERR_BASE+0) ; unsupported wave format
WAVERR_STILLPLAYING EQU (WAVERR_BASE+1) ; still something playing
WAVERR_UNPREPARED EQU (WAVERR_BASE+2) ; header not prepared
WAVERR_SYNC EQU (WAVERR_BASE+3) ; device is synchronous
WAVERR_LASTERROR EQU (WAVERR_BASE+3) ; last error in range
; wave callback messages
WOM_OPEN EQU MM_WOM_OPEN
WOM_CLOSE EQU MM_WOM_CLOSE
WOM_DONE EQU MM_WOM_DONE
WIM_OPEN EQU MM_WIM_OPEN
WIM_CLOSE EQU MM_WIM_CLOSE
WIM_DATA EQU MM_WIM_DATA
; device ID for wave device mapper
WAVE_MAPPER EQU (-1)
; flags for dwFlags parameter in waveOutOpen() and waveInOpen()
WAVE_FORMAT_QUERY EQU 0001H
WAVE_ALLOWSYNC EQU 0002H
WAVEHDR STRUC
lpWaveData DD ?
dwWaveBufferLength DD ?
dwWaveBytesRecorded DD ?
dwWaveUser DD ?
dwWaveFlags DD ?
dwWaveLoops DD ?
lpWaveNext DD ?
Wavereserved DD ?
WAVEHDR ENDS
; flags for dwFlags field of WAVEHDR
WHDR_DONE EQU 00000001H ; done bit
WHDR_PREPARED EQU 00000002H ; set if this header has been prepared
WHDR_BEGINLOOP EQU 00000004H ; loop start block
WHDR_ENDLOOP EQU 00000008H ; loop end block
WHDR_INQUEUE EQU 00000010H ; reserved for driver
WAVEOUTCAPS STRUC
woc_wMid DW ?
woc_wPid DW ?
woc_vDriverVersion DW ?
woc_szPname DB MAXPNAMELEN DUP (?)
woc_dwFormats DD ?
woc_wChannels DW ?
woc_dwSupport DD ?
WAVEOUTCAPS ENDS
; flags for dwSupport field of WAVEOUTCAPS
WAVECAPS_PITCH EQU 0001H ; supports pitch control
WAVECAPS_PLAYBACKRATE EQU 0002H ; supports playback rate control
WAVECAPS_VOLUME EQU 0004H ; supports volume control
WAVECAPS_LRVOLUME EQU 0008H ; separate left-right volume control
WAVECAPS_SYNC EQU 0010H
WAVECAPS_SAMPLEACCURATE EQU 0020H
WAVECAPS_DIRECTSOUND EQU 0040H
WAVEINCAPS STRUC
wic_wMid DW ?
wic_wPid DW ?
wic_vDriverVersion DW ?
wic_szPname DB MAXPNAMELEN DUP (?)
wic_dwFormats DD ?
wic_wChannels DW ?
WAVEINCAPS ENDS
; defines for dwFormat field of WAVEINCAPS and WAVEOUTCAPS
WAVE_INVALIDFORMAT EQU 00000000H ; invalid format
WAVE_FORMAT_1M08 EQU 00000001H ; 11.025 kHz, Mono, 8-bit
WAVE_FORMAT_1S08 EQU 00000002H ; 11.025 kHz, Stereo, 8-bit
WAVE_FORMAT_1M16 EQU 00000004H ; 11.025 kHz, Mono, 16-bit
WAVE_FORMAT_1S16 EQU 00000008H ; 11.025 kHz, Stereo, 16-bit
WAVE_FORMAT_2M08 EQU 00000010H ; 22.05 kHz, Mono, 8-bit
WAVE_FORMAT_2S08 EQU 00000020H ; 22.05 kHz, Stereo, 8-bit
WAVE_FORMAT_2M16 EQU 00000040H ; 22.05 kHz, Mono, 16-bit
WAVE_FORMAT_2S16 EQU 00000080H ; 22.05 kHz, Stereo, 16-bit
WAVE_FORMAT_4M08 EQU 00000100H ; 44.1 kHz, Mono, 8-bit
WAVE_FORMAT_4S08 EQU 00000200H ; 44.1 kHz, Stereo, 8-bit
WAVE_FORMAT_4M16 EQU 00000400H ; 44.1 kHz, Mono, 16-bit
WAVE_FORMAT_4S16 EQU 00000800H ; 44.1 kHz, Stereo, 16-bit
WAVEFORMAT STRUC
wfmt_wFormatTag DW ?
wfmt_nChannels DW ?
wfmt_nSamplesPerSec DD ?
wfmt_nAvgBytesPerSec DD ?
wfmt_nBlockAlign DW ?
WAVEFORMAT ENDS
; flags for wFormatTag field of WAVEFORMAT
WAVE_FORMAT_PCM EQU 1
PCMWAVEFORMAT STRUC
pcm_wf DB SIZE WAVEFORMAT DUP (?)
pcm_wBitsPerSample DW ?
PCMWAVEFORMAT ENDS
endif ;both; ifndef MMNOWAVE
ifndef MMNOMIDI ;both
;***************************************************************************
; MIDI audio support
;*************************************************************************
; MIDI error return values
MIDIERR_UNPREPARED EQU (MIDIERR_BASE+0) ; header not prepared
MIDIERR_STILLPLAYING EQU (MIDIERR_BASE+1) ; still something playing
MIDIERR_NOMAP EQU (MIDIERR_BASE+2) ; no configured instruments
MIDIERR_NOTREADY EQU (MIDIERR_BASE+3) ; hardware is still busy
MIDIERR_NODEVICE EQU (MIDIERR_BASE+4) ; port no longer connected
MIDIERR_INVALIDSETUP EQU (MIDIERR_BASE+5) ; invalid MIF
MIDIERR_BADOPENMODE EQU (MIDIERR_BASE+6) ; operation unsupported w/ open mode
MIDIERR_DONT_CONTINUE EQU (MIDIERR_BASE+7) ; thru device 'eating' a message
MIDIERR_LASTERROR EQU (MIDIERR_BASE+7) ; last error in range
MIDIPATCHSIZE EQU 128
; MIDI callback messages
MIM_OPEN EQU MM_MIM_OPEN
MIM_CLOSE EQU MM_MIM_CLOSE
MIM_DATA EQU MM_MIM_DATA
MIM_LONGDATA EQU MM_MIM_LONGDATA
MIM_ERROR EQU MM_MIM_ERROR
MIM_LONGERROR EQU MM_MIM_LONGERROR
MOM_OPEN EQU MM_MOM_OPEN
MOM_CLOSE EQU MM_MOM_CLOSE
MOM_DONE EQU MM_MOM_DONE
; device ID for MIDI mapper
MIDIMAPPER EQU (-1)
MIDI_MAPPER EQU (-1)
; flags for wFlags parm of midiOutCachePatches(), midiOutCacheDrumPatches()
MIDI_CACHE_ALL EQU 1
MIDI_CACHE_BESTFIT EQU 2
MIDI_CACHE_QUERY EQU 3
MIDI_UNCACHE EQU 4
MIDIOUTCAPS STRUC
moc_wMid DW ?
moc_wPid DW ?
moc_vDriverVersion DW ?
moc_szPname DB MAXPNAMELEN DUP (?)
moc_wTechnology DW ?
moc_wVoices DW ?
moc_wNotes DW ?
moc_wChannelMask DW ?
moc_dwSupport DD ?
MIDIOUTCAPS ENDS
; flags for wTechnology field of MIDIOUTCAPS structure
MOD_MIDIPORT EQU 1 ; output port
MOD_SYNTH EQU 2 ; generic internal synth
MOD_SQSYNTH EQU 3 ; square wave internal synth
MOD_FMSYNTH EQU 4 ; FM internal synth
MOD_MAPPER EQU 5 ; MIDI mapper
; flags for dwSupport field of MIDIOUTCAPS structure
MIDICAPS_VOLUME EQU 0001H ; supports volume control
MIDICAPS_LRVOLUME EQU 0002H ; separate left-right volume control
MIDICAPS_CACHE EQU 0004H
MIDIINCAPS STRUC
mic_wMid DW ?
mic_wPid DW ?
mic_vDriverVersion DW ?
mic_szPname DB MAXPNAMELEN DUP (?)
MIDIINCAPS ENDS
MIDIHDR STRUC
lpMidiData DD ?
dwMidiBufferLength DD ?
dwMidiBytesRecorded DD ?
dwMidiUser DD ?
dwMidiFlags DD ?
lpMidiNext DD ?
Midireserved DD ?
MididwOffset DD ?
MididwReserved DD 4 DUP (?)
MIDIHDR ENDS
MIDIHDR31 STRUC
w31lpMidiData DD ?
w31dwMidiBufferLength DD ?
w31dwMidiBytesRecorded DD ?
w31dwMidiUser DD ?
w31dwMidiFlags DD ?
w31lpMidiNext DD ?
w31Midireserved DD ?
MIDIHDR31 ENDS
; flags for dwFlags field of MIDIHDR structure
MHDR_DONE EQU 00000001H ; done bit
MHDR_PREPARED EQU 00000002H ; set if header prepared
MHDR_INQUEUE EQU 00000004H ; reserved for driver
MHDR_ISSTRM EQU 00000008H ; Buffer is stream buffer
endif ;both; ifndef MMNOMIDI
ifndef MMNOAUX ;both
;***************************************************************************
; Auxiliary audio support
;*************************************************************************
; device ID for aux device mapper
AUX_MAPPER EQU (-1)
AUXCAPS STRUC
acaps_wMid DW ?
acaps_wPid DW ?
acaps_vDriverVersion DW ?
acaps_szPname DB MAXPNAMELEN DUP (?)
acaps_wTechnology DW ?
acaps_dwSupport DD ?
AUXCAPS ENDS
; flags for wTechnology field in AUXCAPS structure
AUXCAPS_CDAUDIO EQU 1 ; audio from internal CD-ROM drive
AUXCAPS_AUXIN EQU 2 ; audio from auxiliary input jacks
; flags for dwSupport field in AUXCAPS structure
AUXCAPS_VOLUME EQU 0001H ; supports volume control
AUXCAPS_LRVOLUME EQU 0002H ; separate left-right volume control
endif ;both; ifndef MMNOAUX
ifndef MMNOTIMER ;both
ifndef _WIN32_VXD
;***************************************************************************
; Timer support
;*************************************************************************
; timer error return values
TIMERR_NOERROR EQU (0) ; no error
TIMERR_NOCANDO EQU (TIMERR_BASE+1) ; request not completed
TIMERR_STRUCT EQU (TIMERR_BASE+33) ; time struct size
; flags for fuEvent parameter of timeSetEvent() function
TIME_ONESHOT EQU 0000H ; program timer for single event
TIME_PERIODIC EQU 0001H ; program for continuous periodic event
ifdef _WIN32
TIME_CALLBACK_FUNCTION EQU 0000H ; callback is function
TIME_CALLBACK_EVENT_SET EQU 0010H ; callback is event - use SetEvent
TIME_CALLBACK_EVENT_PULSE EQU 0020H ; callback is event - use PulseEvent
endif
TIMECAPS STRUC
tc_wPeriodMin DW ?
tc_wPeriodMax DW ?
TIMECAPS ENDS
endif ; ifndef _WIN32_VXD
endif ;both; ifndef MMNOTIMER
ifndef MMNOJOY ;both
;***************************************************************************
; Joystick support
;*************************************************************************
; joystick error return values
JOYERR_NOERROR EQU (0) ; no error
JOYERR_PARMS EQU (JOYERR_BASE+5) ; bad parameters
JOYERR_NOCANDO EQU (JOYERR_BASE+6) ; request not completed
JOYERR_UNPLUGGED EQU (JOYERR_BASE+7) ; joystick is unplugged
; constants used with JOYINFO and JOYINFOEX structures and MM_JOY* messages
JOY_BUTTON1 EQU 0001H
JOY_BUTTON2 EQU 0002H
JOY_BUTTON3 EQU 0004H
JOY_BUTTON4 EQU 0008H
JOY_BUTTON1CHG EQU 0100H
JOY_BUTTON2CHG EQU 0200H
JOY_BUTTON3CHG EQU 0400H
JOY_BUTTON4CHG EQU 0800H
; constants used with JOYINFOEX
JOY_BUTTON5 EQU 00000010H
JOY_BUTTON6 EQU 00000020H
JOY_BUTTON7 EQU 00000040H
JOY_BUTTON8 EQU 00000080H
JOY_BUTTON9 EQU 00000100H
JOY_BUTTON10 EQU 00000200H
JOY_BUTTON11 EQU 00000400H
JOY_BUTTON12 EQU 00000800H
JOY_BUTTON13 EQU 00001000H
JOY_BUTTON14 EQU 00002000H
JOY_BUTTON15 EQU 00004000H
JOY_BUTTON16 EQU 00008000H
JOY_BUTTON17 EQU 00010000H
JOY_BUTTON18 EQU 00020000H
JOY_BUTTON19 EQU 00040000H
JOY_BUTTON20 EQU 00080000H
JOY_BUTTON21 EQU 00100000H
JOY_BUTTON22 EQU 00200000H
JOY_BUTTON23 EQU 00400000H
JOY_BUTTON24 EQU 00800000H
JOY_BUTTON25 EQU 01000000H
JOY_BUTTON26 EQU 02000000H
JOY_BUTTON27 EQU 04000000H
JOY_BUTTON28 EQU 08000000H
JOY_BUTTON29 EQU 10000000H
JOY_BUTTON30 EQU 20000000H
JOY_BUTTON31 EQU 40000000H
JOY_BUTTON32 EQU 80000000H
; constants used with JOYINFOEX structure
JOY_POVCENTERED EQU -1
JOY_POVFORWARD EQU 0
JOY_POVRIGHT EQU 9000
JOY_POVBACKWARD EQU 18000
JOY_POVLEFT EQU 27000
JOY_RETURNX EQU 00000001H
JOY_RETURNY EQU 00000002H
JOY_RETURNZ EQU 00000004H
JOY_RETURNR EQU 00000008H
JOY_RETURNU EQU 00000010H ; axis 5
JOY_RETURNV EQU 00000020H ; axis 6
JOY_RETURNPOV EQU 00000040H
JOY_RETURNBUTTONS EQU 00000080H
JOY_RETURNRAWDATA EQU 00000100H
JOY_RETURNPOVCTS EQU 00000200H
JOY_RETURNCENTERED EQU 00000400H
JOY_USEDEADZONE EQU 00000800H
JOY_RETURNALL EQU (JOY_RETURNX OR JOY_RETURNY OR JOY_RETURNZ OR JOY_RETURNR OR JOY_RETURNU OR JOY_RETURNV OR JOY_RETURNPOV OR JOY_RETURNBUTTONS)
JOY_CAL_READALWAYS EQU 00010000H
JOY_CAL_READXYONLY EQU 00020000H
JOY_CAL_READ3 EQU 00040000H
JOY_CAL_READ4 EQU 00080000H
JOY_CAL_READXONLY EQU 00100000H
JOY_CAL_READYONLY EQU 00200000H
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?