Организация ввода-вывода. Часть 1. Виртуальные драйверы и виртуальное окружение WINDOWS. Рощин А.В. - 76 стр.

UptoLike

Составители: 

76
Листинг 3.2. SKELCTRL.ASM (версия DDK)
.386p
;******************************************************************************
; I N C L U D E S
;******************************************************************************
include vmm.inc
include debug.inc
;================================================================
; V I R T U A L D E V I C E D E C L A R A T I O N
;================================================================
DECLARE_VIRTUAL_DEVICE SKELETON, 1, 0, ControlProc,
UNDEFINED_DEVICE_ID, \
UNDEFINED_INIT_ORDER
VxD_LOCKED_CODE_SEG
;================================================================
; ПРОЦЕДУРА: ControlProc
;
; ОПИСАНИЕ:
; Device control procedure for the SKELETON VxD
;
; ВХОД:
; EAX = Control call ID
;
; ВЫХОД:
; если флаг переноса сброшен
; Успешно
; иначе
; Вызов неудачен
;
; ИСПОЛЬЗУЕТ:
; EAX, EBX, ECX, EDX, ESI, EDI, Flags
;================================================================
BeginProc ControlProc
Control_Dispatch SYS_VM_INIT, _OnSysVmInit, cCall, <ebx>
Control_Dispatch SYS_VM_TERMINATE, _OnSysVmTerminate, cCall, <ebx>
Control_Dispatch CREATE_VM, _OnCreateVm, cCall, <ebx>
Control_Dispatch DESTROY_VM, _OnDestroyVm, cCall, <ebx>
Control_Dispatch CREATE_THREAD, _OnCreateThread, cCall, <edi>
Control_Dispatch DESTROY_THREAD, _OnDestroyThread, cCall, <edi>
clc
ret
EndProc ControlProc
VxD_LOCKED_CODE_ENDS
END
                                      76



Листинг 3.2. SKELCTRL.ASM (версия DDK)
   .386p
;******************************************************************************
;            INCLUDES
;******************************************************************************
   include vmm.inc
   include debug.inc
;================================================================
;      VIRTUAL DEVICE DECLARATION
;================================================================
DECLARE_VIRTUAL_DEVICE SKELETON, 1, 0, ControlProc,
UNDEFINED_DEVICE_ID, \
                  UNDEFINED_INIT_ORDER
VxD_LOCKED_CODE_SEG
;================================================================
; ПРОЦЕДУРА: ControlProc
;
; ОПИСАНИЕ:
; Device control procedure for the SKELETON VxD
;
; ВХОД:
; EAX = Control call ID
;
; ВЫХОД:
; если флаг переноса сброшен
;      Успешно
; иначе
;      Вызов неудачен
;
; ИСПОЛЬЗУЕТ:
; EAX, EBX, ECX, EDX, ESI, EDI, Flags
;================================================================

BeginProc ControlProc
  Control_Dispatch SYS_VM_INIT, _OnSysVmInit, cCall, 
  Control_Dispatch SYS_VM_TERMINATE, _OnSysVmTerminate, cCall, 
  Control_Dispatch CREATE_VM, _OnCreateVm, cCall, 
  Control_Dispatch DESTROY_VM, _OnDestroyVm, cCall, 
  Control_Dispatch CREATE_THREAD, _OnCreateThread, cCall, 
  Control_Dispatch DESTROY_THREAD, _OnDestroyThread, cCall, 

  clc
  ret

EndProc ControlProc

VxD_LOCKED_CODE_ENDS

  END