|
|
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.