home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 8 / 08.iso / d / d083 / 1.img / PATCH / VTEMPD.ASM next >
Encoding:
Assembly Source File  |  1993-02-02  |  11.9 KB  |  470 lines

  1. ;==========================================================================
  2. ;   VTEMPD.ASM - Virtual Template Device (VTEMPD)
  3. ;
  4. ;   Written by Raymond Patch.
  5. ;==========================================================================
  6.  
  7. .386p
  8.  
  9. .LIST
  10.  
  11. INCLUDE VMM.Inc
  12. INCLUDE Debug.Inc
  13.  
  14. .XLIST
  15.  
  16. Create_VTEMPD_Service_Table    EQU     TRUE
  17.  
  18. INCLUDE VTEMPD.INC
  19.  
  20. ;==========================================================================
  21. ;   Device Descriptor Block (DDB)
  22. ;==========================================================================
  23.  
  24. DECLARE_VIRTUAL_DEVICE VTEMPD, VTEMPD_Ver_Major, VTEMPD_Ver_Minor,\
  25.                        VTEMPD_Control, VTEMPD_Device_ID, VTEMPD_Init_Order,\
  26.                        VTEMPD_V86_API_Handler, VTEMPD_PM_API_Handler
  27.  
  28. ;==========================================================================
  29. ;   VxD data segment.
  30. ;==========================================================================
  31.  
  32. VxD_DATA_SEG
  33. VxD_DATA_ENDS
  34.  
  35. ;==========================================================================
  36. ;   INITIALIZATION CODE
  37. ;==========================================================================
  38.  
  39. VxD_ICODE_SEG
  40.  
  41. ;==========================================================================
  42. ;   VTEMPD_Sys_Critical_Init
  43. ;
  44. ;   ENTRY:
  45. ;       EBX = Handle of VM.
  46. ;
  47. ;   EXIT:
  48. ;       Carry clear.
  49. ;
  50. ;==========================================================================
  51.  
  52. BeginProc VTEMPD_Sys_Critical_Init
  53.     Trace_Out "VTEMPD_Sys_Critical_Init exit"
  54.  
  55.     clc
  56.     ret
  57. EndProc VTEMPD_Sys_Critical_Init
  58.  
  59. ;==========================================================================
  60. ;   VTEMPD_Device_Init
  61. ;
  62. ;   ENTRY:
  63. ;       EBX = Handle of VM.
  64. ;
  65. ;   EXIT:
  66. ;    Carry clear to indicate success
  67. ;==========================================================================
  68.  
  69. BeginProc VTEMPD_Device_Init
  70.     Trace_Out "VTEMPD_Device_Init exit"
  71.  
  72.     clc
  73.     ret
  74. EndProc VTEMPD_Device_Init
  75.  
  76. ;==========================================================================
  77. ;   VTEMPD_Init_Complete
  78. ;
  79. ;   ENTRY:
  80. ;       EBX = Handle of VM.
  81. ;
  82. ;   EXIT:
  83. ;    Carry clear to indicate success
  84. ;
  85. ;==========================================================================
  86.  
  87. BeginProc VTEMPD_Init_Complete
  88.     Trace_Out "VTEMPD_Init_Complete entered"
  89.  
  90.     clc
  91.     ret
  92. EndProc VTEMPD_Init_Complete
  93.  
  94. VxD_ICODE_ENDS
  95.  
  96. ;==========================================================================
  97. ;   Locked code segment.
  98. ;==========================================================================
  99.  
  100. VxD_LOCKED_CODE_SEG
  101.  
  102. ;==========================================================================
  103. ;   VTEMPD_Get_Version
  104. ;
  105. ;   ENTRY: nothing.
  106. ;
  107. ;   EXIT:
  108. ;    AH = Major version number
  109. ;    AL = Minor version number
  110. ;       Carry cleared.
  111. ;
  112. ;==========================================================================
  113.  
  114. BeginProc VTEMPD_Get_Version, Service
  115.     Trace_Out "VTEMPD_Get_Version entered"
  116.  
  117.     mov     eax, VTEMPD_Version
  118.     clc
  119.     ret
  120. EndProc VTEMPD_Get_Version
  121.  
  122. ;==========================================================================
  123. ;   VTEMPD_Control
  124. ;
  125. ;   DESCRIPTION:
  126. ;    This is the main control procedure for the VTEMPD device. The macros 
  127. ;    Begin_Control_Dispatch and End_Control_Dispatch were used to create the 
  128. ;      dispatch table.
  129. ;
  130. ;   ENTRY:
  131. ;    EAX = System control message
  132. ;
  133. ;   EXIT:
  134. ;    All control procedures implemented in this sample driver return the carry cleared.
  135. ;==========================================================================
  136.  
  137. BeginProc VTEMPD_Control
  138.     
  139. Begin_Control_Dispatch VTEMPD_Control
  140.     Control_Dispatch Sys_Critical_Init,         VTEMPD_Sys_Critical_Init
  141.     Control_Dispatch Device_Init,               VTEMPD_Device_Init
  142.     Control_Dispatch Init_Complete,         VTEMPD_Init_Complete
  143.     Control_Dispatch Sys_VM_Init,         VTEMPD_Sys_VM_Init
  144.     Control_Dispatch Sys_VM_Terminate,    VTEMPD_Sys_VM_Terminate
  145.     Control_Dispatch System_Exit,                VTEMPD_System_Exit
  146.     Control_Dispatch Sys_Critical_Exit,      VTEMPD_Sys_Critical_Exit
  147.     Control_Dispatch Create_VM,              VTEMPD_Create_VM
  148.     Control_Dispatch VM_Critical_Init,       VTEMPD_VM_Critical_Init
  149.     Control_Dispatch VM_Init,                    VTEMPD_VM_Init
  150.     Control_Dispatch VM_Terminate,           VTEMPD_VM_Terminate
  151.     Control_Dispatch VM_Not_Executeable,   VTEMPD_VM_Not_Executeable
  152.     Control_Dispatch Query_Destroy,          VTEMPD_Query_Destroy
  153. End_Control_Dispatch VTEMPD_Control
  154.  
  155. EndProc VTEMPD_Control
  156.  
  157. ;==========================================================================
  158. ;   VTEMPD_Sys_VM_Init
  159. ;
  160. ;   ENTRY:
  161. ;       EBX = Handle of VM.
  162. ;
  163. ;   EXIT:
  164. ;    Carry clear
  165. ;
  166. ;==========================================================================
  167.  
  168. BeginProc VTEMPD_Sys_VM_Init
  169.     Trace_Out "VTEMPD_Sys_VM_Init entered"
  170.  
  171.     clc
  172.     ret
  173. EndProc VTEMPD_Sys_VM_Init
  174.  
  175. ;==========================================================================
  176. ;   VTEMPD_Sys_VM_Terminate
  177. ;
  178. ;   ENTRY:
  179. ;       EBX = Handle of VM.
  180. ;
  181. ;   EXIT:
  182. ;    Carry clear
  183. ;
  184. ;==========================================================================
  185.  
  186. BeginProc VTEMPD_Sys_VM_Terminate
  187.     Trace_Out "VTEMPD_Sys_VM_Terminate entered"
  188.  
  189.     clc
  190.     ret
  191. EndProc VTEMPD_Sys_VM_Terminate
  192.  
  193. ;==========================================================================
  194. ;   VTEMPD_System_Exit
  195. ;
  196. ;   ENTRY:
  197. ;       EBX = Handle of VM.
  198. ;
  199. ;   EXIT:
  200. ;    Carry clear
  201. ;
  202. ;==========================================================================
  203.  
  204. BeginProc VTEMPD_System_Exit
  205.     Trace_Out "VTEMPD_System_Exit entered"
  206.  
  207.     clc
  208.     ret
  209. EndProc VTEMPD_System_Exit
  210.  
  211. ;==========================================================================
  212. ;   VTEMPD_Sys_Critical_Exit
  213. ;
  214. ;   ENTRY:
  215. ;       EBX = Handle of VM.
  216. ;
  217. ;   EXIT:
  218. ;    Carry clear
  219. ;
  220. ;==========================================================================
  221.  
  222. BeginProc VTEMPD_Sys_Critical_Exit
  223.     Trace_Out "VTEMPD_Sys_Critical_Exit entered"
  224.  
  225.     clc
  226.     ret
  227. EndProc VTEMPD_Sys_Critical_Exit
  228.  
  229. ;==========================================================================
  230. ;   VTEMPD_Create_VM
  231. ;
  232. ;   ENTRY:
  233. ;       EBX = Handle of VM.
  234. ;
  235. ;   EXIT:
  236. ;    Carry clear
  237. ;
  238. ;==========================================================================
  239.  
  240. BeginProc VTEMPD_Create_VM
  241.     Trace_Out "VTEMPD_Create_VM entered"
  242.  
  243.     clc
  244.     ret
  245. EndProc VTEMPD_Create_VM
  246.  
  247. ;==========================================================================
  248. ;   VTEMPD_VM_Critical_Init
  249. ;
  250. ;   ENTRY:
  251. ;       EBX = Handle of VM.
  252. ;
  253. ;   EXIT:
  254. ;    Carry clear
  255. ;
  256. ;==========================================================================
  257.  
  258. BeginProc VTEMPD_VM_Critical_Init
  259.     Trace_Out "VTEMPD_VM_Critical_Init entered"
  260.  
  261.     clc
  262.     ret
  263. EndProc VTEMPD_VM_Critical_Init
  264.  
  265. ;==========================================================================
  266. ;   VTEMPD_VM_Init
  267. ;
  268. ;   ENTRY:
  269. ;       EBX = Handle of VM.
  270. ;
  271. ;   EXIT:
  272. ;    Carry clear
  273. ;
  274. ;==========================================================================
  275.  
  276. BeginProc VTEMPD_VM_Init
  277.     Trace_Out "VTEMPD_VM_Init entered"
  278.  
  279.     clc
  280.     ret
  281. EndProc VTEMPD_VM_Init
  282.  
  283. ;==========================================================================
  284. ;   VTEMPD_VM_Terminate
  285. ;
  286. ;   ENTRY:
  287. ;       EBX = Handle of VM.
  288. ;
  289. ;   EXIT:
  290. ;    Carry clear
  291. ;
  292. ;==========================================================================
  293.  
  294. BeginProc VTEMPD_VM_Terminate
  295.     Trace_Out "VTEMPD_VM_Terminate entered"
  296.  
  297.     clc
  298.     ret
  299. EndProc VTEMPD_VM_Terminate
  300.  
  301. ;==========================================================================
  302. ;   VTEMPD_VM_NotExec
  303. ;
  304. ;   ENTRY:
  305. ;       EBX = Handle of VM.
  306. ;
  307. ;   EXIT:
  308. ;    Carry clear
  309. ;
  310. ;==========================================================================
  311.  
  312. BeginProc VTEMPD_VM_Not_Executeable
  313.     Trace_Out "VTEMPD_VM_Not_Executeable entered"
  314.  
  315.    clc
  316.     ret
  317. EndProc VTEMPD_VM_Not_Executeable
  318.  
  319. ;==========================================================================
  320. ;   VTEMPD_Query_Destroy
  321. ;
  322. ;   ENTRY:
  323. ;       EBX = Handle of VM.
  324. ;
  325. ;   EXIT:
  326. ;       Carry clear.
  327. ;
  328. ;==========================================================================
  329.  
  330. BeginProc VTEMPD_Query_Destroy
  331.     Trace_Out "VTEMPD_Query_Destroy entered"
  332.  
  333.     clc
  334.     ret
  335. EndProc VTEMPD_Query_Destroy
  336.  
  337. VxD_LOCKED_CODE_ENDS
  338.  
  339. VxD_CODE_SEG
  340.  
  341. ;==========================================================================
  342. ;   VTEMPD_PM_API_Handler
  343. ;
  344. ;   PURPOSE:
  345. ;    This function is the main entry to the PM api set.
  346. ;
  347. ;   ENTRY:
  348. ;       EBX = Current VM handle
  349. ;    EBP = Client register structure
  350. ;    Client_CS:IP = Instruction following API call.
  351. ;
  352. ;   EXIT:
  353. ;       Carry clear indicates success.
  354. ;       Carry set indicates failure.
  355. ;
  356. ;==========================================================================
  357.  
  358. BeginProc VTEMPD_PM_API_Handler, HIGH_FREQ
  359.     Trace_Out "VTEMPD_PM_API_Handler entered"
  360.  
  361.     xor    eax, eax
  362.     ret
  363. EndProc VTEMPD_PM_API_Handler
  364.  
  365. ;==========================================================================
  366. ;   VTEMPD_V86_API_Handler
  367. ;
  368. ;   PURPOSE:
  369. ;       This function is the main entry to the V86 api set.
  370. ;
  371. ;   ENTRY:
  372. ;    EBX = Current VM handle
  373. ;    EBP = Client register structure
  374. ;       Client_CS:IP = Instruction following API call.
  375. ;
  376. ;   EXIT:
  377. ;       Carry clear indicates success.
  378. ;       Carry set indicates failure.
  379. ;
  380. ;==========================================================================
  381.  
  382. BeginProc VTEMPD_V86_API_Handler, HIGH_FREQ
  383.     Trace_Out "VTEMPD_V86_API_Handler entered"
  384.  
  385.     xor    eax, eax
  386.     ret
  387. EndProc VTEMPD_V86_API_Handler
  388.  
  389. VxD_CODE_ENDS
  390.  
  391. ;==========================================================================
  392. ;   REAL MODE INITIALIZATION CODE
  393. ;==========================================================================
  394.  
  395. VxD_REAL_INIT_SEG
  396.  
  397. ;==========================================================================
  398. ;   VTEMPD_Real_Init
  399. ;
  400. ;   Real mode initialization is done here.
  401. ;==========================================================================
  402.  
  403. BeginProc VTEMPD_Real_Init
  404.     mov     ax, Device_Load_Ok        ; return success
  405.  
  406. VTEMPD_Real_Init_Exit:
  407.  
  408.     xor     bx, bx                            ; no exclusion pages
  409.     xor     si, si                         ; no instance data
  410.     xor     edx, edx                            ; no reference data
  411.     ret
  412. EndProc   VTEMPD_Real_Init
  413.  
  414. VxD_REAL_INIT_ENDS
  415.  
  416. END VTEMPD_Real_Init
  417.  
  418. ;==========================================================================
  419. ;   VTEMPD.INC - Virtual Sample Driver (VTEMPD)
  420. ;
  421. ;   Written by Raymond Patch.
  422. ;==========================================================================
  423.  
  424. VTEMPD_Ver_Major        EQU     03h
  425. VTEMPD_Ver_Minor        EQU     00h
  426. VTEMPD_Version         EQU     ((VTEMPD_Ver_Major SHL 8) + VTEMPD_Ver_Minor)
  427. VTEMPD_Device_ID        EQU     000200h
  428. VTEMPD_Init_Order         EQU     Undefined_Init_Order
  429.  
  430. ;==========================================================================
  431. ;   Debugging macros.
  432. ;==========================================================================
  433.  
  434. TRAP MACRO                    ; TRAP uses int 1h. 
  435.      int 1h                   
  436. ENDM
  437.  
  438. BRKPT MACRO                    ; BRKPT uses int 3h
  439.     int 3h                    
  440. ENDM
  441.  
  442. ;==========================================================================
  443. ;   Service Table.
  444. ;==========================================================================
  445.  
  446. Begin_Service_Table VTEMPD
  447.     VTEMPD_Service VTEMPD_Get_Version, LOCAL
  448. End_Service_Table VTEMPD
  449.  
  450. ;==========================================================================
  451. ;     Template VxD definition file.
  452. ;==========================================================================
  453.  
  454. LIBRARY VTEMPD
  455.  
  456. DESCRIPTION 'Ehanced Windows sample VTEMPD driver.'
  457.  
  458. EXETYPE     DEV386
  459.  
  460. SEGMENTS
  461.         _LTEXT    PRELOAD NONDISCARDABLE
  462.         _LDATA     PRELOAD NONDISCARDABLE
  463.         _ITEXT     CLASS 'ICODE' DISCARDABLE
  464.         _IDATA     CLASS 'ICODE' DISCARDABLE
  465.         _TEXT      CLASS 'PCODE' NONDISCARDABLE
  466.     _DATA      CLASS 'PCODE' NONDISCARDABLE
  467.  
  468. EXPORTS
  469.     VTEMPD_DDB  @1
  470.