VBoxGuest driver and control

This commit is contained in:
lex
2026-03-04 22:03:47 +03:00
parent 0f400bc0e0
commit 53f047232f
75 changed files with 12248 additions and 4033 deletions

57
core/timer.inc Normal file
View File

@@ -0,0 +1,57 @@
; =============================================================================
; Модуль : Timer
; Назначение : Периодический вызов fn_on_tick сервисов
; Файл : core/timer.inc
; =============================================================================
align 4
vbox_timer_handle dd 0
TIMER_DELAY_START equ 10 ; 100ms до первого вызова
TIMER_INTERVAL equ 10 ; 100ms между вызовами
; timer_init Запуск таймера
proc timer_init
DEBUGF 2, "[VBoxGuest] [Timer] Initializing...\n"
mov eax, [vbox_timer_handle]
test eax, eax
jnz .ok
invoke TimerHS, TIMER_DELAY_START, TIMER_INTERVAL, timer_cb, 0
test eax, eax
jz .err
mov [vbox_timer_handle], eax
DEBUGF 2, "[VBoxGuest] [Timer] Started, handle=0x%x, interval=%dms\n", \
eax, TIMER_INTERVAL * 10
.ok:
xor eax, eax
ret
.err:
DEBUGF 2, "[VBoxGuest] [Timer] ERROR: Failed to start\n"
mov eax, VERR_INTERNAL_ERROR
ret
endp
; timer_stop Остановка таймера
proc timer_stop
mov eax, [vbox_timer_handle]
test eax, eax
jz .done
invoke CancelTimerHS, eax
mov dword [vbox_timer_handle], 0
DEBUGF 2, "[VBoxGuest] [Timer] Stopped\n"
.done:
ret
endp
; Callback таймера вызывает fn_on_tick у всех включенных сервисов
proc timer_cb stdcall, userdata:dword
stdcall dispatcher_tick_all
ret
endp