Files
kolibrios/drivers/vboxguest/hgcm/params.inc
lex ab59015ded
Some checks failed
Build system / Check kernel codestyle (pull_request) Has been cancelled
Build system / Build (pull_request) Has been cancelled
Add VBoxGuest driver code
2026-03-04 21:16:17 +03:00

79 lines
3.3 KiB
PHP

; =============================================================================
; Модуль : HGCM Params
; Назначение : Формирование параметров HGCM_PARM
; Файл : hgcm/params.inc
; Версия : 1.1
; Дата : 2025.01.15
; =============================================================================
; hgcm_param_32 заполнить 32-битный параметр
;
; Вход : p указатель на HGCM_PARM, value значение
proc hgcm_param_32 uses edi, p:dword, value:dword
mov edi, [p]
mov dword [edi + HGCM_PARM.type], HGCM_PARM_TYPE_32BIT
mov eax, [value]
mov dword [edi + HGCM_PARM.u.value32], eax
ret
endp
; -----------------------------------------------------------------------------
; hgcm_param_64 заполнить 64-битный параметр
;
; Вход : p указатель на HGCM_PARM, lo/hi младшая/старшая часть
; -----------------------------------------------------------------------------
proc hgcm_param_64 uses edi, p:dword, lo:dword, hi:dword
mov edi, [p]
mov dword [edi + HGCM_PARM.type], HGCM_PARM_TYPE_64BIT
mov eax, [lo]
mov dword [edi + HGCM_PARM.u.value64_lo], eax
mov eax, [hi]
mov dword [edi + HGCM_PARM.u.value64_hi], eax
ret
endp
; -----------------------------------------------------------------------------
; hgcm_param_linaddr_in линейный буфер IN (гость хост)
;
; Вход : p указатель на HGCM_PARM, addr адрес буфера, size размер
; -----------------------------------------------------------------------------
proc hgcm_param_linaddr_in uses edi, p:dword, addr:dword, size:dword
mov edi, [p]
mov dword [edi + HGCM_PARM.type], HGCM_PARM_TYPE_LINADDR_IN
mov eax, [size]
mov dword [edi + HGCM_PARM.u.LinAddr.size], eax
mov eax, [addr]
mov dword [edi + HGCM_PARM.u.LinAddr.offset], eax
ret
endp
; -----------------------------------------------------------------------------
; hgcm_param_linaddr_out линейный буфер OUT (хост гость)
;
; Вход : p указатель на HGCM_PARM, addr адрес буфера, size размер
; -----------------------------------------------------------------------------
proc hgcm_param_linaddr_out uses edi, p:dword, addr:dword, size:dword
mov edi, [p]
mov dword [edi + HGCM_PARM.type], HGCM_PARM_TYPE_LINADDR_OUT
mov eax, [size]
mov dword [edi + HGCM_PARM.u.LinAddr.size], eax
mov eax, [addr]
mov dword [edi + HGCM_PARM.u.LinAddr.offset], eax
ret
endp
; -----------------------------------------------------------------------------
; hgcm_param_linaddr_inout линейный буфер INOUT (двунаправленный)
;
; Вход : p указатель на HGCM_PARM, addr адрес буфера, size размер
; -----------------------------------------------------------------------------
proc hgcm_param_linaddr_inout uses edi, p:dword, addr:dword, size:dword
mov edi, [p]
mov dword [edi + HGCM_PARM.type], HGCM_PARM_TYPE_LINADDR_INOUT
mov eax, [size]
mov dword [edi + HGCM_PARM.u.LinAddr.size], eax
mov eax, [addr]
mov dword [edi + HGCM_PARM.u.LinAddr.offset], eax
ret
endp