; ============================================================================= ; Программа : VirtualBox Guest Driver для KolibriOS ; Модуль : Main driver entry ; Назначение : Full-featured driver ; Файл : vboxguest.asm ; Автор : lex_coder(lex_coder@mail.ru), Алексей Михайлов ; ; 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