|
|
1.1 root 1:
2:
3: DOSIOCTL
4:
5: This sample demonstrates the simulation of DOS function calls under NT.
6: Specifically, it shows how a DOS driver and VDD can tranlate DOS OPEN's,
7: CLOSE's and IOCTL's to the Win32 calls CreateFile(), CloseHandle() and
8: DeviceIoControl().
9:
10: This 4 modules that make up this sample are listed below:
11:
12: DOSAPP - DOS Application
13: DOSDRVR - DOS Device Driver
14: VDD - NT Virtual Device Driver
15: KRLNDRVR - NT Kernel Device Driver
16:
17: These four modules work together to illustrate the basic communication
18: mechanisms that exist for each component. When these components are
19: properly installed, running the DOS application will cause the following
20: chain of events to occur:
21:
22:
23: 1) DOSAPP issues an IOCTL Read.
24:
25: 2) DOSDRV passes the call and buffer pointer to the VDD with the
26: DispatchCall() function.
27:
28: 3) VDD passes the buffer pointer from DOSDRV to KRNLDRVR with
29: the Win32 DeviceIoControl() function.
30:
31: 4) KRNLDRVR responds to the IOCTL with static information.
32:
33: 5) The chain returns, and DOSAPP displays the information.
34:
35:
36: When the DOS application is run, it should produce the following line:
37:
38: IOCTL Read returns: 12345678
39:
40: The significance of this output is that the value x'12345678' is
41: defined only in the NT kernel driver. The sole purpose of the other
42: components is to deliver this single piece of data from the NT
43: driver to the DOS application.
44:
45:
46: Installing and Running this sample
47: ----------------------------------
48:
49: KRNLDRVR
50: --------
51:
52: You can use Regedt32 to create a SERVICES entry for
53: the krnldrvr driver. Create a key under:
54:
55: HKEY_LOCAL_MACHINE\CurrentControlSet\Services\KRNLDRVR
56:
57: with the following values:
58:
59: ErrorControl:DWORD 1
60: Start:DWORD 3
61:
62: Copy the KRNLDRVR.SYS created by the build process to the NT
63: SYSTEM32\DRIVERS directory. From and administrator account on
64: the machine, issue:
65:
66: NET START KRNLDRVR
67:
68: Starting the driver manually in this manner can be beneficial
69: during the coding and testing phase of creating your own driver.
70:
71:
72: VDD
73: ---
74:
75: Because the DOS driver explicitly loads the VDD with a RegisterModule(),
76: the VDD.DLL file produced by the build process need only be available
77: in the search path.
78:
79: DOSDRVR
80: -------
81:
82: The DOS driver can be loaded by adding a "device=" line in the CONFIG.NT
83: file in the SYSTEM32 directory.
84:
85:
86: DOSAPP
87: ------
88:
89: The DOSAPP may simply be executed from any directory.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.