Techsoft Pvt. Ltd. VxDWriter    
Develop VxD in C/C++      
Products Services Support           
 
 
Overview
Screenshots
Sample VxDs
DbgTerm Utility
Download
Buy it

The following sample virtual device drivers (VxDs) are included with the VxDWriter tool kit. You can download some of these sample device drivers (VxD) from here. Note that you need the full version of the VxDWriter 2.0 package to compile these samples, and can't use the demo version of VxDWriter 2.0 to compile them.

Sample VxDs written in "C"
VxD Description
APCall.VxD This sample illustrates the use of asynchronous procedure call (APC) to communicate with a ring3 application from VxD.
DbgTerm.VxD This VxD shows how to hook VxD services that uses registers for passing parameters. It is used by the DbgTerm application to intercepts debug outputs from other VxDs.
Event.VxD This event sample VxD demonstrates, (a) how to schedule and handle global events, and (b) how to implement the "dot" command, i.e., debugging services, in your VxD to help debugging.
Generic.VxD This is a generic skeleton VxD that supports V86 APIs, PM APIs, Win32 device I/O control APIs, and VxD service table interface for VxD to VxD communication.
KbdFiltr.VxD This VxD demonstrates how to write a keyboard filter driver. It prints the scan codes on debug terminal, as well as swaps the DEL and INS keys on the keyboard.
LoadVxD.VxD This sample shows how to load another dynamic VxD, which does not have a unique device ID, call the service(s) of the loaded VxD, and then unload it from the memory.
MapPhys.VxD This VxD demonstrates mapping of physical address to linear address, which can be accessed by the ring3 application programs.
Moushook.VxD This VxD demonstrates how to hook and manipulate mouse pointer messages and install hot keys. You can reverse the mouse axis and change the sensitivity with this VxD through hot keys.
NdisProt.VxD It is a skeleton NDIS protocol driver. It binds to the first adapter found on the system, and sets it in promiscuous mode. It will then display the source and destination address of all IP packets received by the adapter on the debug terminal. For a more complete sample, see the "PACKET" driver in the DDK.
Vitd.VxD This VxD provides a simulation of a hardware interval timer for virtual machines. It is the same VITD VxD that is provided with the DDK, but rewritten in "C" to demonstrate the use of VxDWriter library.
VMIrqd.VxD This VxD demonstrates the virtualization of a hardware interrupt (IRQ). It will attempt to virtualize the IRQ 9 in share mode. The hardware interrupt handler does nothing and passes the interrupt to the next handler for processing.
VxDInt.VxD This VxD shows how to simulate interrupt in V86 mode. It implements a Win32 device IOCTL API to read physical sectors of the disks from the application programs.

Sample VxDs written in C++
VxD Description
APCall.VxD This sample demonstrates how to use asynchronous procedure call (APC) to communicate with a ring3 application.
AppyTime.VxD This AppyTime sample demonstrates how the use the application-time event to load a 32-bit DLL and call its API from VxD.
AsyncIO.VxD This sample shows how to process asynchronous I/O. This sample is similar to Asyncw32 sample in the DDK but written in C++. For demonstration, it processes I/O requests in idle-time handler.
FCrypt.VxD This sample demonstrates how to implement simple real-time file system encryption driver using IFS file system hook function. For simplicity, encryption/decryption is done with 1's complement, and it works on a single byte at a time.
FileHook.VxD This is a basic file I/O hook sample. It displays the I/O request name and corresponding file name on debug device and passes the I/O request to the previous IFS hooker. This sample may be ideal for starting your own file I/O hooker device.
Generic.VxD This is a generic skeleton VxD written in C++ that supports V86 APIs, PM APIs, Win32 device I/O control APIs, and VxD service class interface for VxD to VxD communication.
IntMon.VxD This VxD demonstrates how to install a V86 mode interrupt hook. It hooks both INT 21h and INT 1Ah, and displays the register contents on the debug terminal both before and after processing the interrupts.
LoadVxD.VxD This VxD demonstrates how to load another dynamic VxD and obtain its device service class object. It loads the Generic.vxd, and then calls its VxD service through device service class object. It also demonstrates the use of DeviceIoControl functon to call Win32 device I/O control API of Generic VxD.
MousHook.VxD This VxD demonstrates how to hook and manipulate mouse pointer messages and install hot keys. You can reverse the mouse axis and change the sensitivity with this VxD through hot keys.
PMFault.VxD This VxD demonstrates how to hook protected mode faults. It hooks four PM faults, and the name of the application and its register contents are displayed on the debug terminal on encountering a fault that is hooked.
RealInit.VxD This VxD demonstrates how to use real-mode initialization code in VxD. It also demonstrates how to call assembly language function from the VxD.
Timer.VxD This sample demonstrates how to install a periodic callback function in your VxD. It uses CTimer class to install a timer callback function.
Vitd.VxD This VxD provides a simulation of a hardware interval timer for virtual machines. It is the same VITD VxD that is provided with the DDK, but rewritten in C++ to demonstrate the use of VFCL .
Vkxd.VxD This VxD is the same as VKXD.VxD of DDK in functionality, but rewritten in C++ using VFCL . It converts F12 key into Alt+Enter key combination. So, you can use F12 key to toggle DOS applications between full-screen and Windowed mode.
VMIOD.VxD This VxD displays data going in and out of a specified I/O port on the debug terminal. It traps port 32h for demonstration.
VMIrqd.VxD This VxD demonstrates the virtualizing of a hardware interrupt (IRQ). It will attempt to virtualize the IRQ 9 in share mode. The hardware interrupt handler does nothing and passes the interrupt to the next handler for processing. Note that it works only for the unvirtualized or shared IRQs. This VxD is similar to VMIRQD.VxD provided with the DDK, but written in C++ for demonstration.
VNmid.VxD This VxD shows how to hook the NMI (Non-maskable interrupt). It currently does not actually DO anything with the NMI except to chain to the previous handler.