Advanced Windows NT Source Code Diskette.
Copyright (c) 1993 by Jeffrey Richter - All Rights Reserved.
==============================================================================

There are two ways to install the sample programs for the book.  Choose the 
method that corresponds to the CPU that Windows NT is running on.

If Windows NT is running on an x86 or MIPS machine, do the following:
   1. From the Program Manager, select File menu and choose Run.
   2. Type a:\setup and press ENTER.
   

If Windows NT is NOT running on an x86 or MIPS machine, do the following:
   1. From the Program Manager, select File menu and choose Run.
   2. Type a:\setup (install-path) and press ENTER.




==============================================================================

The diskette included with this book contains the source code
for all of the sample applications presented.  Each directory name
identifies the name of the sample application.  The extension of each
directory indicates the chapter in the book that described the
program.  Below is a list of the directories contained on the
diskette:

SubDirectory  Chp  Description
------------  ---  ----------------------------------------------------
VMAlloc.03     3   Virtual Memory Allocator application.  Demonstrates
                   how to reserve and commit virtual memory.
                   
VMStat.03      3   Virtual Memory Statistics application.  Demonstrates
                   the use of the GlobalMemoryStatus function.
                   
VMMap.03       3   Virtual Memory Map application.  Demonstrates the
                   use of the VirtualQuery function to walk the
                   address space of a process.
                   
SysStat.03     3   System Status application.  Demonstrates the use of 
                   the GetSystemInfo function.
                   
FileRev.04     4   ANSI Text File Reverse application.  Demonstrates 
                   how to use memory mapped files to manipulate the
                   contents of a file.
                   
MMFShare.04    4   Memory Mapped File Share application.  Demonstrates 
                   how to use memory mapped files to share data between
                   different processes.
                   
CritSecs.05    5   Critical Sections application.  Demonstrates how
                   to use critical sections to synchronize different
                   threads in a process.  Also demonstrates how to
                   raise and lower a process's priority class and shows
                   how to alter the relative priority of threads within
                   a process.
                   
Mutexes.05     5   Mutex application.  This application is identical to
                   the CritSecs application except that all of the
                   critical sections have been replaced with mutexes.
                   
SprMrkt.05     5   Supermarket Simulation application.  This application
                   demonstrates how you can simulate real-world events 
                   using multiple threads and synchronization objects.  
                   In this application, the supermarket is controlled by 
                   a single thread and each shopper is their own thread.
                   The threads are synchronizaed by semaphores and mutexes.
                   
Bucket.05      5   The Bucket of Balls application.  This application
                   demonstrates how to synchronize access to data that
                   has several reads and writers using manual-reset events,
                   mutexes, semaphores, and interlocked access to a LONG.
                   
DocStats.05    5   The Document Statistics application.  This application
                   shows how to use auto-reset events to synchronize
                   multiple threads.
                   
LISLab.06      6   The Local Input State Laboratory.  This application
                   allows you to experiment with the local input state
                   features of the Win32 subsystem.
                   
CopyData.06    6   The Copy Data application.  This application 
                   demonstrates how to send data from one process to 
                   another using window messages.
                   
ModUse.07      7   The Module Usage application.  This application 
                   demonstrates how to simulate the GetModuleUsage
                   function that exists in 16-bit Windows but has become
                   obsolete in Win32.

MultInst.07    7   The Multiple Instance application. This application
                   demonstrates how to determine how many instance of 
                   your application are running concurrently.
                   
PMRest.07      7   The Program Manager Restore application.  This 
                   application demonstrates how to subclass a window
                   created in another process using window hooks, shared 
                   memory, and dynamic-link libraries.
                   
TLSDyn.08      8   The Dynamic Thread Local Storage application.  This
                   application demonstrates how to implement and use
                   dynamic thread local storage to associate specific 
                   data with individual threads of a process.
                   
TLSStat.08     8   The Static Thread Local Storage application.  This
                   application demonstrates how to implement and use
                   static thread local storage to associate specific 
                   data with individual threads of a process.
                   
DiskInfo.09    9   The Disk Information application.  This application 
                   demonstrates how to determine the attributes of the
                   disk drives currently available on the system.
                   
DirWalk.09     9   The Directory Walker application.  This application
                   demonstrates how to traverse a directory tree to 
                   determine the existing files and subdirectories.
                   
AlertIO.09     9   The Alertable File I/O application.  This application
                   demonstrates how to execute and respond to 
                   asynchronous alertable file I/O operations.
                   
FileChng.09    9   The File Change Notification application.  This 
                   application demonstrates how to have the system
                   notify a process's thread when ever a change occurs
                   to files or directories in the file system.
                   
SEHTerm.10    10   The Structured Exception Handler Termination 
                   application.  This application demonstrates how to
                   use Structured Exception Handling to guarantee that
                   resources allocated in a function are always freed.
                   
SEHExcpt.10   10   The Structured Exception Handling Exception 
                   application.  This application demonstrates how to
                   filter and handle exceptions.  Specifically, the
                   application shows how to use SEH for committing
                   virtual memory.
                   
SEHSoft.10    10   The Structured Exception Handling Software Exception 
                   application.  This application demonstrates how to
                   create, raise, filter and handle your own software 
                   exceptions.  This application builds on the knowledge
                   of the SEHExcpt application.
