Build Notes =========== Directories ----------- The source code is split into three main directories: \WIN95IFS\SRC, \WIN95IFS\FSDEV, and \WIN95IFS\MULTIMON. \WIN95IFS\SRC contains subdirectories for chapter programs. The name of each subdirectory matches the name of the program sample; these include: DOSVOL, NT32, HOOKER21, SR, FD, FSHQUERY, FSHENUM, FSHATTR, MONOCFSD, DISKDUMP, PAGERS. \WIN95IFS\FSDEV contains INCLUDE, LIB, IFSWRAPS, CHENTRY, and DEBIFS subdirectories. The INCLUDE directory contains header files useful in building VxDs. VXD.H, contains a set of macros for facilitating VxD writing in 'C'. These are extensions to the methods described by Microsoft in the DDK. IFSMGREX.H contains declarations for IFSMGR services and data structures. The INCLUDE subdirectory also contains make file templates VXD.MAK (for building VxDs), WIN32APP.MAK (Win32 applications), CONAPP.MAK (Win32 console applications), and DOSAPP.MAK (DOS applications). IFSWRAPS contains source code and makefiles for building the IFSWRAPS.CLB library of VMM, VWIN32, and IFSMGR wrappers. CHENTRY holds the source code for the CHENTRY.EXE utility; this tool removes the leading underscore from the export name for a VxD. DEBIFS contains source for a static VxD which implements the ".debifs" command. This command is available only from a debugger such as WDEB386 or Soft-Ice for Windows 95. \WIN95IFS\MULTIMON contains subdirectories holding the MultiMon monitor drivers as well as a directory containing the source code for MULTIMON.EXE. Build Configuration ------------------- All of the builds are based on "handwritten" makefiles which are NMAKE compatible. A TOOLS.INI file is used in conjunction with NMAKE to establish the directories of tools, include files, and libraries. A copy of the TOOLS.INI that I use can be found in \Win95IFS\FSDEV. You will need to modify this to match your own build environment. Also make sure the INIT environment variable specifies the location of the TOOLS.INI that you want NMAKE to load. This is the layout of the section of the TOOLS.INI file that is used by NMAKE: [NMAKE] DEVTOOLS=d VC32ROOT=$(DEVTOOLS):\msdev VC32BIN=$(VC32ROOT)\bin VC32INC=$(VC32ROOT)\include VC32LIB=$(VC32ROOT)\lib MFC32INC=$(VC32ROOT)\mfc\include VC16ROOT=e:\msvc VC16BIN=$(VC16ROOT)\bin VC16INC=$(VC16ROOT)\include VC16LIB=$(VC16ROOT)\lib MFC16INC=$(VC16ROOT)\mfc\include SDKROOT=$(DEVTOOLS):\mstools SDKBIN=$(SDKROOT)\bin SDKINC=$(SDKROOT)\include SDKLIB=$(SDKROOT)\lib SDK16ROOT=$(DEVTOOLS):\mstools SDK16BIN=$(SDK16ROOT)\binw16 SDK16INC=$(SDK16ROOT)\inc16 SDK16LIB=$(SDK16ROOT)\lib16 DDKROOT=$(DEVTOOLS):\ddk DDKBIN=$(DDKROOT)\bin DDKINC=$(DDKROOT)\inc32 DDKLIB=$(DDKROOT)\lib FSROOT=e:\fsdev FSBIN=$(FSROOT)\bin FSLIB=$(FSROOT)\lib FSINC=$(FSROOT)\include MONLIB=e:\ifsbook\monlib MONH=e:\ifsbook\common The macros beginning with "VC32" refer to locations of Visual C++ 32-bit components whereas "VC16" refer to locations of Visual C++ 16-bit components. The "MFC32" and "MFC16" entries refer to paths of MFC specific components. The "SDK" and "SDK16" entries refer to 32-bit and 16-bit SDK components respectively, and the "DDK" entries refer to components in the Windows 95 DDK. The "FS" entries refer to locations of the subdirectories of FSDEV. The MONLIB macro gives the location of \WIN95IFS\MULTIMON\MONLIB which contains the static library MULTIMON.LIB. The MONH macros gives the location of the directory which contains MultiMon's common files, \WIN95IFS\MULTIMON\COMMON. Required Tools -------------- You will need to have a copy of the Windows 95 DDK which comes as part of a level 2 Microsoft Developer Network subscription. The other requirement is a VC2.x or VC4.x compiler and linker. If you use a 2.x version of the compiler, make sure you follow the DDK instructions for applying "patches". Don't waste your time trying to get another compiler to work with the DDK. You will find that the DDK include files are incompatible. Some samples are DOS applications. Visual C++ version 1.5x was used to compile these. To build the IFSWRAPS.CLB library you will need to use the Microsoft Assembler 6.11c (or newer). The assembler is included in the DDK. Note: Microsoft Visual C++ version 4.1 is incompatible with building VxDs. -------