windows-nt/Source/XPSP1/NT/drivers/wdm/dvd/dxapi/dsdriver.inc
2020-09-26 16:20:57 +08:00

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)