Files
kolibrios/drivers/vboxguest/vboxguest.asm
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

93 lines
2.5 KiB
NASM

; =============================================================================
; Программа : VirtualBox Guest Driver для KolibriOS
; Модуль : Main driver entry
; Назначение : Full-featured driver
; Файл : vboxguest.asm
; Автор : lex_coder(lex_coder@mail.ru), Алексей Михайлов
; При моральной поддержке сообщества KolibriOS
;
; cp /usbhd0/1/vboxguest/vboxguest /sys/Drivers/vboxguest.sys
; loaddrv vboxguest
;
; =============================================================================
format PE DLL native 0.05
entry START
section '.flat' code readable writable executable
include '/usbhd0/1/ksrc_n/DRIVERS/proc32.inc'
include '/usbhd0/1/ksrc_n/DRIVERS/struct.inc'
include '/usbhd0/1/ksrc_n/DRIVERS/macros.inc'
include '/usbhd0/1/ksrc_n/DRIVERS/peimport.inc'
include '/usbhd0/1/ksrc_n/DRIVERS/fdo.inc'
include '/usbhd0/1/ksrc_n/DRIVERS/pci.inc'
include 'config.inc'
include 'common/common.inc'
include 'data/data.inc'
include 'core/core.inc'
include 'vmmdev/vmmdev.inc'
include 'hgcm/core.inc'
include 'sys/init.inc'
include 'sys/shutdown.inc'
include 'sys/ioctl.inc'
include 'services/services.inc'
BUILD_SERVICE_TABLE
; =============================================================================
; Driver Entry Point
; =============================================================================
proc START c, state:dword, cmdline:dword
push ebx esi edi
cmp [state], DRV_ENTRY
je .entry
cmp [state], DRV_EXIT
je .exit
pop edi esi ebx
xor eax, eax
ret
.entry:
DEBUGF 2, "[VBoxGuest] VBoxGuest Driver v2.0\n"
call sys_init ;
test eax, eax
jnz .fail
; Регистрация сервиса (IOCTL интерфейс для приложений)
invoke RegService, service_name, service_proc
DEBUGF 2, "[VBoxGuest] IOCTL service '%s' registered (API v%d)\n", service_name, API_VERSION
DEBUGF 2, "[VBoxGuest] Initialization complete!\n"
pop edi esi ebx
ret
.fail:
DEBUGF 2, "[VBoxGuest] Initialization FAILED\n"
.exit:
DEBUGF 2, "[VBoxGuest] DRV_EXIT: Shutting down driver\n"
call sys_shutdown
pop edi esi ebx
xor eax, eax
ret
endp
; =============================================================================
; Data Section
; =============================================================================
align 4
service_name db 'VBOXGUEST', 0
align 4
vbox_device VBOX_DEVICE
include_debug_strings
align 4
data fixups
end data