230 lines
5.4 KiB
PHP
230 lines
5.4 KiB
PHP
;
|
|
;DSVXD.INC
|
|
;
|
|
;Include file for HAL and HEL VXD layers
|
|
;
|
|
|
|
;
|
|
;Return byte count to caller
|
|
;
|
|
;Do not use ESI as parameter!
|
|
;
|
|
|
|
OUTCNT MACRO RetCnt
|
|
LOCAL exit
|
|
|
|
push esi
|
|
mov esi,IOCTL_parms
|
|
mov esi,[esi].lpcbBytesReturned
|
|
or esi,esi
|
|
jz exit
|
|
mov DWORD PTR [esi],RetCnt
|
|
exit: pop esi
|
|
|
|
ENDM
|
|
|
|
;
|
|
;Return 4-byte DWORD to caller
|
|
;
|
|
;Do not use ESI as parameter!
|
|
;
|
|
|
|
OUTDWORD MACRO RetVal
|
|
LOCAL exit
|
|
|
|
push esi
|
|
mov esi,IOCTL_parms
|
|
mov esi,[esi].lpvOutBuffer
|
|
or esi,esi
|
|
jz exit
|
|
mov DWORD PTR [esi],RetVal
|
|
OUTCNT 4
|
|
exit: pop esi
|
|
|
|
ENDM
|
|
|
|
;
|
|
;Read 4-byte DWORD from caller
|
|
;
|
|
;Do not use ESI as parameter!
|
|
;
|
|
|
|
INDWORD MACRO RetVal
|
|
LOCAL exit
|
|
|
|
push esi
|
|
mov esi,IOCTL_parms
|
|
mov esi,[esi].lpvInBuffer
|
|
mov RetVal,-1
|
|
or esi,esi
|
|
jz exit
|
|
mov RetVal,DWORD PTR [esi]
|
|
exit: pop esi
|
|
|
|
ENDM
|
|
|
|
;
|
|
;String copy/write macros
|
|
;
|
|
|
|
REP_MOVSB MACRO
|
|
|
|
push ecx
|
|
and ecx,3
|
|
rep movsb
|
|
pop ecx
|
|
shr ecx,2
|
|
rep movsd
|
|
|
|
ENDM
|
|
|
|
REP_STOSB MACRO
|
|
|
|
push ecx
|
|
and ecx,3
|
|
rep stosb
|
|
pop ecx
|
|
shr ecx,2
|
|
rep stosd
|
|
|
|
ENDM
|
|
|
|
;
|
|
;Scale definition
|
|
;
|
|
DS_SCALE_MAX equ 65535
|
|
DS_SCALE_MID equ 32768
|
|
|
|
;
|
|
;Error codes
|
|
;
|
|
|
|
HAL_OK equ 0
|
|
HAL_ERROR equ 1
|
|
HAL_CANT_OPEN_VXD equ 2
|
|
HAL_ALLOC_FAILED equ 3
|
|
HAL_NOT_ALLOCATED equ 4
|
|
HAL_MUST_STOP_FIRST equ 5
|
|
|
|
HAL_SYSALLOCMEM equ 11
|
|
|
|
;
|
|
;Base mode flag equates
|
|
; Note: This file is generated by modeflag.m4
|
|
|
|
;
|
|
;HALHWMODE afAbilityFlags values
|
|
;
|
|
;These flags describe dynamic capabilities (what the device
|
|
;can/cannot do)
|
|
;
|
|
|
|
A_CAN_CHANGE_VOLUME equ 00000001b ;Can change volume while playing
|
|
A_CANNOT_CHANGE_VOLUME equ 00000000b ;Cannot change volume while playing
|
|
|
|
A_CAN_CHANGE_MODE equ 00000010b ;Can change PCM mode while playing
|
|
A_CANNOT_CHANGE_MODE equ 00000000b ;Cannot change PCM mode while playing
|
|
|
|
A_CAN_CHANGE_RATE equ 00000100b ;Can change rate while playing
|
|
A_CANNOT_CHANGE_RATE equ 00000000b ;Cannot change rate while playing
|
|
|
|
A_CAN_LOOP_SECONDARY equ 00001000b ;Can loop secondary buffers before starting
|
|
A_CANNOT_LOOP_SECONDARY equ 00000000b ;Cannot loop secondary buffers before starting
|
|
|
|
A_CAN_UNLOOP_SECONDARY equ 00010000b ;Secondary bufers do not have to loop
|
|
A_CANNOT_UNLOOP_SECONDARY equ 00000000b ;Secondary buffers must always loop
|
|
|
|
A_CAN_CHANGE_LOOP_STATUS equ 00100000b ;Can turn looping on/off during playback
|
|
A_CANNOT_CHANGE_LOOP_STATUS equ 00000000b ;Cannot turn looping on/off during playback
|
|
|
|
;
|
|
;HALSTRBUF.dwFlags values
|
|
;
|
|
|
|
HSB_DMA_ALLOC equ 1h ;Buffer was allocated from DMA services
|
|
HSB_RAM_ALLOC equ 2h ;Buffer was allocated from sound card RAM
|
|
|
|
;
|
|
;
|
|
;Passed to HAL_ChangeStreamFormat() to inhibit parameter
|
|
;change
|
|
;
|
|
|
|
HF_NO_CHANGE equ -1
|
|
|
|
|
|
;
|
|
;DSound Caps
|
|
;
|
|
|
|
|
|
DSC_LOCK_SYSMEM equ 65535
|
|
DSC_LOCK_SLOW equ 64
|
|
DSC_PLAY_DMA equ 20
|
|
DSC_PLAY_ONBOARD equ 0
|
|
|
|
|
|
DSC_CAPSF_MONO equ 1
|
|
DSC_CAPSF_STEREO equ 2
|
|
DSC_CAPSF_8BIT equ 4
|
|
DSC_CAPSF_16BIT equ 8
|
|
|
|
|
|
;
|
|
;Stream buffer descriptor
|
|
;
|
|
HALSTRBUF STRUCT
|
|
hfFormat DWORD ?
|
|
dwSampleRate DWORD ?
|
|
dwUserSampleRate DWORD ?
|
|
dwVolume DWORD ?
|
|
dwPan DWORD ?
|
|
dwLVolume DWORD ?
|
|
dwRVolume DWORD ?
|
|
dwMVolume DWORD ?
|
|
HALSTRBUF ENDS
|
|
|
|
;
|
|
;Mix session descriptor
|
|
;
|
|
|
|
MIXSESSION STRUCT
|
|
lpBuildBuffer DWORD ?
|
|
dwBuildSize DWORD ?
|
|
HALOutStrBuf HALSTRBUF <>
|
|
pBuffer DWORD ?
|
|
cbBuffer DWORD ?
|
|
nOutputBytes DWORD ?
|
|
MIXSESSION ENDS
|
|
|
|
;
|
|
;Mixer input descriptor
|
|
;
|
|
|
|
MIXERINPUT STRUCT
|
|
HALInStrBuf HALSTRBUF <>
|
|
pBuffer DWORD ?
|
|
cbBuffer DWORD ?
|
|
lpdwInputPos DWORD ?
|
|
dwInputBytes DWORD ?
|
|
dwOutputOffset DWORD ?
|
|
MIXERINPUT ENDS
|
|
|
|
|
|
; VxD ID registered to DSHEL.VXD
|
|
DSOUND_Device_ID EQU 357Eh
|
|
|
|
ifdef DDB_Sys_Crit_Init_Done
|
|
|
|
; DSound Driver VxDs use this service to
|
|
|
|
Begin_Service_Table DSOUND
|
|
DSOUND_Service _DSOUND_GetVersion, LOCAL
|
|
DSOUND_Service _DSOUND_RegisterDeviceDriver, VxD_CODE
|
|
DSOUND_Service _DSOUND_DeregisterDeviceDriver, VxD_CODE
|
|
DSOUND_Service _DSOUND_DD_IOCTL, VxD_CODE
|
|
End_Service_Table DSOUND
|
|
|
|
|
|
ENDIF ; DDB_Sys_Crit_Init_Done (VxD's only)
|