home *** CD-ROM | disk | FTP | other *** search
- ;==========================================================================
- ; VTEMPD.ASM - Virtual Template Device (VTEMPD)
- ;
- ; Written by Raymond Patch.
- ;==========================================================================
-
- .386p
-
- .LIST
-
- INCLUDE VMM.Inc
- INCLUDE Debug.Inc
-
- .XLIST
-
- Create_VTEMPD_Service_Table EQU TRUE
-
- INCLUDE VTEMPD.INC
-
- ;==========================================================================
- ; Device Descriptor Block (DDB)
- ;==========================================================================
-
- DECLARE_VIRTUAL_DEVICE VTEMPD, VTEMPD_Ver_Major, VTEMPD_Ver_Minor,\
- VTEMPD_Control, VTEMPD_Device_ID, VTEMPD_Init_Order,\
- VTEMPD_V86_API_Handler, VTEMPD_PM_API_Handler
-
- ;==========================================================================
- ; VxD data segment.
- ;==========================================================================
-
- VxD_DATA_SEG
- VxD_DATA_ENDS
-
- ;==========================================================================
- ; INITIALIZATION CODE
- ;==========================================================================
-
- VxD_ICODE_SEG
-
- ;==========================================================================
- ; VTEMPD_Sys_Critical_Init
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear.
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_Sys_Critical_Init
- Trace_Out "VTEMPD_Sys_Critical_Init exit"
-
- clc
- ret
- EndProc VTEMPD_Sys_Critical_Init
-
- ;==========================================================================
- ; VTEMPD_Device_Init
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear to indicate success
- ;==========================================================================
-
- BeginProc VTEMPD_Device_Init
- Trace_Out "VTEMPD_Device_Init exit"
-
- clc
- ret
- EndProc VTEMPD_Device_Init
-
- ;==========================================================================
- ; VTEMPD_Init_Complete
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear to indicate success
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_Init_Complete
- Trace_Out "VTEMPD_Init_Complete entered"
-
- clc
- ret
- EndProc VTEMPD_Init_Complete
-
- VxD_ICODE_ENDS
-
- ;==========================================================================
- ; Locked code segment.
- ;==========================================================================
-
- VxD_LOCKED_CODE_SEG
-
- ;==========================================================================
- ; VTEMPD_Get_Version
- ;
- ; ENTRY: nothing.
- ;
- ; EXIT:
- ; AH = Major version number
- ; AL = Minor version number
- ; Carry cleared.
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_Get_Version, Service
- Trace_Out "VTEMPD_Get_Version entered"
-
- mov eax, VTEMPD_Version
- clc
- ret
- EndProc VTEMPD_Get_Version
-
- ;==========================================================================
- ; VTEMPD_Control
- ;
- ; DESCRIPTION:
- ; This is the main control procedure for the VTEMPD device. The macros
- ; Begin_Control_Dispatch and End_Control_Dispatch were used to create the
- ; dispatch table.
- ;
- ; ENTRY:
- ; EAX = System control message
- ;
- ; EXIT:
- ; All control procedures implemented in this sample driver return the carry cleared.
- ;==========================================================================
-
- BeginProc VTEMPD_Control
-
- Begin_Control_Dispatch VTEMPD_Control
- Control_Dispatch Sys_Critical_Init, VTEMPD_Sys_Critical_Init
- Control_Dispatch Device_Init, VTEMPD_Device_Init
- Control_Dispatch Init_Complete, VTEMPD_Init_Complete
- Control_Dispatch Sys_VM_Init, VTEMPD_Sys_VM_Init
- Control_Dispatch Sys_VM_Terminate, VTEMPD_Sys_VM_Terminate
- Control_Dispatch System_Exit, VTEMPD_System_Exit
- Control_Dispatch Sys_Critical_Exit, VTEMPD_Sys_Critical_Exit
- Control_Dispatch Create_VM, VTEMPD_Create_VM
- Control_Dispatch VM_Critical_Init, VTEMPD_VM_Critical_Init
- Control_Dispatch VM_Init, VTEMPD_VM_Init
- Control_Dispatch VM_Terminate, VTEMPD_VM_Terminate
- Control_Dispatch VM_Not_Executeable, VTEMPD_VM_Not_Executeable
- Control_Dispatch Query_Destroy, VTEMPD_Query_Destroy
- End_Control_Dispatch VTEMPD_Control
-
- EndProc VTEMPD_Control
-
- ;==========================================================================
- ; VTEMPD_Sys_VM_Init
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_Sys_VM_Init
- Trace_Out "VTEMPD_Sys_VM_Init entered"
-
- clc
- ret
- EndProc VTEMPD_Sys_VM_Init
-
- ;==========================================================================
- ; VTEMPD_Sys_VM_Terminate
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_Sys_VM_Terminate
- Trace_Out "VTEMPD_Sys_VM_Terminate entered"
-
- clc
- ret
- EndProc VTEMPD_Sys_VM_Terminate
-
- ;==========================================================================
- ; VTEMPD_System_Exit
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_System_Exit
- Trace_Out "VTEMPD_System_Exit entered"
-
- clc
- ret
- EndProc VTEMPD_System_Exit
-
- ;==========================================================================
- ; VTEMPD_Sys_Critical_Exit
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_Sys_Critical_Exit
- Trace_Out "VTEMPD_Sys_Critical_Exit entered"
-
- clc
- ret
- EndProc VTEMPD_Sys_Critical_Exit
-
- ;==========================================================================
- ; VTEMPD_Create_VM
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_Create_VM
- Trace_Out "VTEMPD_Create_VM entered"
-
- clc
- ret
- EndProc VTEMPD_Create_VM
-
- ;==========================================================================
- ; VTEMPD_VM_Critical_Init
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_VM_Critical_Init
- Trace_Out "VTEMPD_VM_Critical_Init entered"
-
- clc
- ret
- EndProc VTEMPD_VM_Critical_Init
-
- ;==========================================================================
- ; VTEMPD_VM_Init
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_VM_Init
- Trace_Out "VTEMPD_VM_Init entered"
-
- clc
- ret
- EndProc VTEMPD_VM_Init
-
- ;==========================================================================
- ; VTEMPD_VM_Terminate
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_VM_Terminate
- Trace_Out "VTEMPD_VM_Terminate entered"
-
- clc
- ret
- EndProc VTEMPD_VM_Terminate
-
- ;==========================================================================
- ; VTEMPD_VM_NotExec
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_VM_Not_Executeable
- Trace_Out "VTEMPD_VM_Not_Executeable entered"
-
- clc
- ret
- EndProc VTEMPD_VM_Not_Executeable
-
- ;==========================================================================
- ; VTEMPD_Query_Destroy
- ;
- ; ENTRY:
- ; EBX = Handle of VM.
- ;
- ; EXIT:
- ; Carry clear.
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_Query_Destroy
- Trace_Out "VTEMPD_Query_Destroy entered"
-
- clc
- ret
- EndProc VTEMPD_Query_Destroy
-
- VxD_LOCKED_CODE_ENDS
-
- VxD_CODE_SEG
-
- ;==========================================================================
- ; VTEMPD_PM_API_Handler
- ;
- ; PURPOSE:
- ; This function is the main entry to the PM api set.
- ;
- ; ENTRY:
- ; EBX = Current VM handle
- ; EBP = Client register structure
- ; Client_CS:IP = Instruction following API call.
- ;
- ; EXIT:
- ; Carry clear indicates success.
- ; Carry set indicates failure.
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_PM_API_Handler, HIGH_FREQ
- Trace_Out "VTEMPD_PM_API_Handler entered"
-
- xor eax, eax
- ret
- EndProc VTEMPD_PM_API_Handler
-
- ;==========================================================================
- ; VTEMPD_V86_API_Handler
- ;
- ; PURPOSE:
- ; This function is the main entry to the V86 api set.
- ;
- ; ENTRY:
- ; EBX = Current VM handle
- ; EBP = Client register structure
- ; Client_CS:IP = Instruction following API call.
- ;
- ; EXIT:
- ; Carry clear indicates success.
- ; Carry set indicates failure.
- ;
- ;==========================================================================
-
- BeginProc VTEMPD_V86_API_Handler, HIGH_FREQ
- Trace_Out "VTEMPD_V86_API_Handler entered"
-
- xor eax, eax
- ret
- EndProc VTEMPD_V86_API_Handler
-
- VxD_CODE_ENDS
-
- ;==========================================================================
- ; REAL MODE INITIALIZATION CODE
- ;==========================================================================
-
- VxD_REAL_INIT_SEG
-
- ;==========================================================================
- ; VTEMPD_Real_Init
- ;
- ; Real mode initialization is done here.
- ;==========================================================================
-
- BeginProc VTEMPD_Real_Init
- mov ax, Device_Load_Ok ; return success
-
- VTEMPD_Real_Init_Exit:
-
- xor bx, bx ; no exclusion pages
- xor si, si ; no instance data
- xor edx, edx ; no reference data
- ret
- EndProc VTEMPD_Real_Init
-
- VxD_REAL_INIT_ENDS
-
- END VTEMPD_Real_Init
-
- ;==========================================================================
- ; VTEMPD.INC - Virtual Sample Driver (VTEMPD)
- ;
- ; Written by Raymond Patch.
- ;==========================================================================
-
- VTEMPD_Ver_Major EQU 03h
- VTEMPD_Ver_Minor EQU 00h
- VTEMPD_Version EQU ((VTEMPD_Ver_Major SHL 8) + VTEMPD_Ver_Minor)
- VTEMPD_Device_ID EQU 000200h
- VTEMPD_Init_Order EQU Undefined_Init_Order
-
- ;==========================================================================
- ; Debugging macros.
- ;==========================================================================
-
- TRAP MACRO ; TRAP uses int 1h.
- int 1h
- ENDM
-
- BRKPT MACRO ; BRKPT uses int 3h
- int 3h
- ENDM
-
- ;==========================================================================
- ; Service Table.
- ;==========================================================================
-
- Begin_Service_Table VTEMPD
- VTEMPD_Service VTEMPD_Get_Version, LOCAL
- End_Service_Table VTEMPD
-
- ;==========================================================================
- ; Template VxD definition file.
- ;==========================================================================
-
- LIBRARY VTEMPD
-
- DESCRIPTION 'Ehanced Windows sample VTEMPD driver.'
-
- EXETYPE DEV386
-
- SEGMENTS
- _LTEXT PRELOAD NONDISCARDABLE
- _LDATA PRELOAD NONDISCARDABLE
- _ITEXT CLASS 'ICODE' DISCARDABLE
- _IDATA CLASS 'ICODE' DISCARDABLE
- _TEXT CLASS 'PCODE' NONDISCARDABLE
- _DATA CLASS 'PCODE' NONDISCARDABLE
-
- EXPORTS
- VTEMPD_DDB @1
-