SWATVXD -- A Debugger for WIN386

The SWATVXD.EXE file is the accompanying VxD to 386SWAT. As long as it is in the same directory as the debugger file (386SWAT.LOD), it is loaded automatically by 386SWAT. If for some reason you don't wish that to happen, using the command WIN NOSWAT prevents the VxD from loading.


The VxD provides Windows services for 386SWAT, and is useful for debugging VxDs.

The VxD's operation is controlled by various switches all of which appear in the [386SWAT] section of your SYSTEM.INI file:

Debugging VxDs

To debug VxDs at their entry points, use the following switches:

VxD Filenames

Some VxD filenames, DDB names, Device_ID, and their switches:

WINA20.386       'LA20HMA ' xxxxh
Debug            '        ' 0002h
*VPICD           'VPICD   ' 0003h
*VDMAD           'VDMAD   ' 0004h
*VTD             'VTD     ' 0005h
*V86MMGR         'V86MMGR ' 0006h
*PAGESWAP        'PageSwap' 0007h
*VKD             'VKD     ' 000Dh
*DOSMGR          'DOSMGR  ' 0015h
*WSHELL          'SHELL   ' 0017h
*PAGEFILE        'PageFile' 0021h
386MAX.VXD       'LoadHi  ' 001Ch
VDDVGA.386       'VDD     ' 000Ah
VNETWARE.386     'DOSNET  ' 001Ah
PM_BIOS.386      'PMVDD   ' 2250h

VxD Message Numbers

0000h  Sys_Critical_Init     001Bh Sys_Dynamic_Device_Init
0001h  Device_Init           001Ch Sys_Dynamic_Device_Exit
0002h  Init_Complete         001Dh Create_Thread
0003h  Sys_VM_Init           001Eh Thread_Init
0004h  Sys_VM_Terminate      001Fh Terminate_Thread
0005h  System_Exit           0020h Thread_Not_Executeable
0006h  Sys_Critical_Exit     0021h Destroy_Thread
0007h  Create_VM             0022h PNP_New_Devnode
0008h  VM_Critical_Init      0023h W32_DeviceIOControl
0009h  VM_Init               0024h Sys_VM_Terminate2
000Ah  VM_Terminate          0025h System_Exit2
000Bh  VM_Not_Executeable    0026h Sys_Critical_Exit2
000Ch  Destroy_VM            0027h Vm_Terminate2
000Dh  VM_Suspend            0028h Vm_Not_Executeable2
000Eh  VM_Resume             0029h Destroy_VM2
000Fh  Set_Device_Focus      002Ah VM_Suspend2
0010h  Begin_Message_Mode    002Bh End_Message_Mode2
0011h  End_Message_Mode      002Ch End_PM_App2
0012h  Reboot_Processor      002Dh Device_Reboot_Notify2
0013h  Query_Destroy         002Eh Crit_Reboot_Notify2
0014h  Debug_Query           002Fh Close_VM_Notify2
0015h  Begin_PM_App          0030h Get_Contention_Handler
0016h  End_PM_App            0031h Kernel32_Initialized
0017h  Device_Reboot_Notify  0032h Kernel32_Shutdown
0018h  Crit_Reboot_Notify
0019h  Close_VM_Notify
001Ah  Power_Event

Message Number Traps

To stop inside 386SWAT at various message numbers, use the following switches:

SWATSysCriticalInit         SWATPowerEvent
SWATDeviceInit              SWATSysDynamicDeviceInit
SWATInitComplete            SWATSysDynamicDeviceExit
SWATSysVMInit               SWATCreateThread
SWATSysVMTerminate          SWATThreadInit
SWATSystemExit              SWATTerminateThread
SWATSysCriticalExit         SWATThreadNotExecuteable
SWATCreateVM                SWATDestroyThread
SWATVMCriticalInit          SWATPNPNewDevnode
SWATVMInit                  SWATW32DeviceIOControl
SWATVMTerminate             SWATSysVMTerminate2
SWATVMNotExecuteable        SWATSystemExit2
SWATDestroyVM               SWATSysCriticalExit2
SWATVMSuspend               SWATVMTerminate2
SWATVMResume                SWATVMNotExecuteable2
SWATSetDeviceFocus          SWATDestroyVM2
SWATBeginMessageMode        SWATVMSuspend2
SWATEndMessageMode          SWATEndMessageMode2
SWATRebootProcessor         SWATEndPMApp2
SWATQueryDestroy            SWATDeviceRebootNotify2
SWATDebugQuery              SWATCritRebootNotify2
SWATBeginPMApp              SWATCloseVMNotify2
SWATEndPMApp                SWATGetContentionHandler
SWATDeviceRebootNotify      SWATKernel32Initialized
SWATCritRebootNotify        SWATKernel32Shutdown

Internal Use Only

The following switches are for internal use only: