Conventional Memory Tracking
============================

CONVMEM.VXD tracks the amount of memory allocated by virtual device
drivers (VxDs) in conventional memory.  Normally, all this memory is
reported against the VMM32 device rather than being broken down.

To install CONVMEM.VXD, copy the file into your Windows\System directory,
and add the line

    device=convmem.vxd

to the [386Enh] section of the system.ini file.  Restart Windows 95,
and then you will find a file called CONVMEM.TXT in your Windows directory.

To uninstall CONVMEM.VXD, delete the file CONVMEM.VXD and remove the
above line from your system.ini file.

Interpreting the output
=======================

The CONVMEM.TXT file consists of a table with the following headers:

    Address - The address at which the memory was allocated (hexadecimal)
    Size    - The size of the memory block (hexadecimal)
    Align   - The requested memory alignment
    I       - The letter "I" if the block is instanced, else blank
    Caller  - The virtual device driver that allocated the memory

A block of memory will be marked as "-- unused --" if it is not assigned
to any virtual device.  This is normally either due to padding required
to satisfy a device's alignment request, or unused bytes at the end of
a page of memory.

Sample Output
=============

VMM32 conventional memory usage

 Address     Size Align I Caller
-------- -------- ----- - ------
0001ddd0 00000006  Byte   VMOUSE(02) + 000001A2
0001ddd6 0000000a         -- unused --
0001dde0 00000050  Para   V86MMGR(04) + 000001ED
0001de30 00000022  Para I VTD(02) + 0000022B
0001de52 0000000e         -- unused --
0001de60 00000020  Para   VCDFSD(03) + 0000005D
0001de80 00000034  Byte   VDD(04) + 000003E5
0001deb4 0000001f  Byte   VMOUSE(02) + 0000042C
0001ded3 00000007  Byte   VNETBIOS(04) + 0000037B
0001deda 00000006         -- unused --
0001dee0 00000008  Para   NWLINK(03) + 00000435
0001dee8 00000002  Byte   DOSMGR(04) + 0000032E
0001deea 0000000e  Byte   VSHARE(02) + 000002DB
0001def8 00000008         -- unused --
0001df00 00000037  Para   IFSMGR(02) + 00000726
0001df37 00000008  Byte   APIX(01) + 00000281
0001df3f 00000001         -- unused --
0001df40 00000041  Para I NWREDIR(04) + 00000356
0001df81 0000003e  Byte I SHELL(05) + 00000551
0001dfbf 00000041         -- unused --
000d1400 000001e4  Byte I MSMINI(02) + 000000A2
000d15e4 00000174  Word I DOSMGR(04) + 00000BF0
000d1758 00000254 Dword I DOSMGR(04) + 00001710
000d19ac 00000004         -- unused --
000d19b0 000003c0  Para   VSHARE(02) + 00000220
000d1d70 00000290         -- unused --
000d2000 00001000  Page   V86MMGR(04) + 00000CEC
000d3000 00000133  Para I IFSMGR(02) + 000006FC
000d3133 0000000d         -- unused --
000d3140 000002f7  Para   IFSMGR(02) + 0000136C
000d3437 00000009         -- unused --
000d3440 000003d4  Para   NWREDIR(04) + 00000309
000d3814 00000200  Word I VMM(05) + 00007974
000d3a14 0000007f  Byte   DOSMGR(04) + 00000473
000d3a93 0000056d         -- unused --

Total unused = 0000087f

Line-by-line Analysis
=====================

The following is a line-by-line analysis of the sample output.
The "Address" and (to a lesser extent) "Size" values may vary
from machine to machine, but the "Caller" will normally remain
consistent.  Of course, not all lines may appear on all machines.
(For example, if your computer does not have a network installed,
then you won't find any of the network-related lines.)


0001ddd0 00000006  Byte   VMOUSE(02) + 000001A2

    These bytes are used by the mouse driver for compatibility
    with MS-DOS applications which use the Int 33h interface in
    unusual ways.

	- One byte for the SLICK editor.
	- One byte for most DOS-extended programs.
	- Four bytes for old BASIC interpreters.

0001dde0 00000050  Para   V86MMGR(04) + 000001ED

    These bytes are used as part of memory manager emulation.

	- 74 bytes for EMS emulation.
	-  6 bytes for XMS emulation.

0001de30 00000022  Para I VTD(02) + 0000022B

    These bytes are used by the Virtual Timer Device as part of its
    timer emulation for MS-DOS programs.

0001de60 00000020  Para   VCDFSD(03) + 0000005D

    These bytes are used by CD-ROM File System driver as part of
    its MSCDEX emulation.

0001de80 00000034  Byte   VDD(04) + 000003E5

    These bytes are used by the display driver for compatibility
    with MS-DOS applications which use the Int 10h interface in
    unusual ways, particularly those which use the Video
    Electronics Standards Assocation (VESA) interface.

0001deb4 0000001f  Byte   VMOUSE(02) + 0000042C

    These bytes are used by the mouse driver for compatibility
    with MS-DOS applications which use the Int 10h interface in
    unusual ways.

0001ded3 00000007  Byte   VNETBIOS(04) + 0000037B

    These bytes are used by the network driver for compatibility
    with 16-bit network drivers and MS-DOS applications which use
    network interfaces in unusual ways.

	- 2 bytes for compatibility with 16-bit network drivers
	- 5 bytes for unusual users of Int 5Ch

0001dee0 00000008  Para   NWLINK(03) + 00000435

    These bytes are used by the network driver for compatibility
    with the IPX MS-DOS network interface and MS-DOS applications
    which use network interfaces in unusual ways.

	- 1 byte for compatibility with some applications
	- 7 bytes for compatibility with IPX

0001dee8 00000002  Byte   DOSMGR(04) + 0000032E

    These bytes are used for compatibility with certain MS-DOS
    applications which use MS-DOS Int 24h in unusual ways.

	- 2 bytes for compatibility with Wing Commander 3

0001deea 0000000e  Byte   VSHARE(02) + 000002DB

    These bytes are used by the VSHARE device to provide file
    sharing support to MS-DOS applications.

0001df00 00000037  Para   IFSMGR(02) + 00000726

    These bytes are used by the Installable File System Manager
    device to provide device driver services for drives which
    exist only in protected mode.

0001df37 00000008  Byte   APIX(01) + 00000281

    These bytes are used to provide emulation of the Common Access
    Method (CAM) interface for Small Computer Systems Interface (SCSI)
    devices.

0001df40 00000041  Para I NWREDIR(04) + 00000356

    These bytes are used to provide MS-DOS emulation for the Novell
    NetWare-Compatible network redirector.

0001df81 0000003e  Byte I SHELL(05) + 00000551

    These bytes are used by the Windows 95 MS-DOS shell to detect
    when an application has entered or exited a graphics mode.

000d1400 000001e4  Byte I MSMINI(02) + 000000A2

    These bytes are used by the mouse driver as part of MOUSE.COM
    emulation.

000d15e4 00000174  Word I DOSMGR(04) + 00000BF0

    These bytes are used by the MS-DOS Manager virtual device in
    order to start a program in a new MS-DOS session.

000d1758 00000254 Dword I DOSMGR(04) + 00001710

    These bytes are used by the MS-DOS Manager virtual device in
    order to increase the value of FILES= in config.sys.

000d19b0 000003c0  Para   VSHARE(02) + 00000220

    These bytes are used by the VSHARE device to provide file
    sharing support to MS-DOS applications which use FCBs.

000d2000 00001000  Page   V86MMGR(04) + 00000CEC

    Memory allocated by V86MMGR(04) + 00000CEC is used as part
    of service translation.  The size of this memory is typically
    4096 bytes (1000h), but other VxDs may request that V86MMGR allocate
    more memory for service translation.

000d3000 00000133  Para I IFSMGR(02) + 000006FC

    These bytes are used by the Installable File System Manager
    device in order to support long file name operations.

000d3140 000002f7  Para   IFSMGR(02) + 0000136C

    These bytes are used by the Installable File System Manager
    device to provide device driver information for drives which
    exist only in protected mode.

000d3440 000003d4  Para   NWREDIR(04) + 00000309

    These bytes are used by the network driver for compatibility
    with the Novell NetWare MS-DOS network interface.

000d3814 00000200  Word I VMM(05) + 00007974

    These bytes are used when the Virtual Machine Manager needs
    to execute 16-bit code temporarily on behalf of another
    virtual device driver.

000d3a14 0000007f  Byte   DOSMGR(04) + 00000473

    These bytes are used by the MS-DOS Manager virtual device in
    order to increase the number of files that can be opened by
    Windows.
