Baum = new Array( new P("#C01","The Anatomy of a VxD",new Array( new P("#C01S01","The VxD Structure"), new P("#C01S02","Virtual Device Initialization"), new P("#C01S03","The VSIMPLED Sources"), new P("#C01S04","Debugging the VSIMPLED VxD"))), new P("#C02","The Virtual Machine Manager",new Array( new P("#C02S01","Event Processing"), new P("#C02S02","Scheduling"), new P("#C02S03","Services and Dynalinking"), new P("#C02S04","Critical Sections"), new P("#C02S05","Suspending VMs, Resuming VMs, and Semaphores"), new P("#C02S06","Asynchronous Services"))), new P("#C03","Memory Management",new Array( new P("#C03S01","VMM Memory Management Services"), new P("#C03S02","Translation Services"), new P("#C03S03","Page Allocation"), new P("#C03S04","Hooked Pages and Page Faults"), new P("#C03S05","Examining Page Table Entries"), new P("#C03S06","Allocating Selectors"), new P("#C03S07","Instance Pages"), new P("#C03S08","Mapping Memory into Multiple VMs"), new P("#C03S09","Page Protection"), new P("#C03S10","V86MMGR"))), new P("#C04","V86/PM VxD API",new Array( new P("#C04S01","The Faulting Mechanism and API Dispatch"), new P("#C04S02","The Client Register Structure"), new P("#C04S03","Examining and Modifying Information of the Active VM"), new P("#C04S04","Creating a Dual-Mode API"), new P("#C04S05","Callbacks and Hooking Existing DOS Devices"))), new P("#C05","Nested Execution",new Array( new P("#C05S01","Simulating Software Interrupts"), new P("#C05S02","Calling Windows Functions from a VxD"), new P("#C05S03","Calling Code in a TSR at Ring 0"))), new P("#C06","I/O Trapping",new Array( new P("#C06S01","Trapping and Dispatching I/O"), new P("#C06S02","Device Contention Management"), new P("#C06S03","Simulating Hardware"))), new P("#C07","IRQ Virtualization",new Array( new P("#C07S01","Default VPICD Handling"), new P("#C07S02","IRQ Virtualization and Sharing"), new P("#C07S03","Dispatching IRQs to a VM"), new P("#C07S04","Servicing Interrupts in a VxD"), new P("#C07S05","Bimodal Interrupt Handlers"))), new P("#C08","Virtualized DMA",new Array( new P("#C08S01","Physical State vs. Virtual State"), new P("#C08S02","DMA Virtualization"), new P("#C08S03","DMA Region Mapping"), new P("#C08S04","Avoiding VDMAD Interference"))), new P("#C09","VKD and Keyboard Processing",new Array( new P("#C09S01","Hot Keys"), new P("#C09S02","Simulating Keystrokes to VMs"))), new P("#C10","Writing VxDs in C",new Array( new P("#C10S01","Segment Attributes"), new P("#C10S02","A 'C'-callable Wrapper for VMM"), new P("#C10S03","VSIMPLED Sources in 'C'"))), new P("#C11","Using the Debugging Services",new Array( new P("#C11S01","Debug Strings"), new P("#C11S02","Assertions"), new P("#C11S03","Extended Debug Commands"))), new P("#C12","VCOMMD Design Notes",new Array( new P("#C12S01","Design"), new P("#C12S02","The Code"), new P("#C12S03","ComSysCritInit"), new P("#C12S04","Port Trapping"), new P("#C12S05","IRQ Trapping"), new P("#C12S06","Com_Api_Proc"), new P("#C12S07","VM Creation and Destruction"), new P("#C12S08","The Total VxD"))), new P("#C13","Win-Link Design and Implementation Notes",new Array( new P("#C13S01","The System"), new P("#C13S02","The Approach"), new P("#C13S03","Implementation"), new P("#C13S04","Registering DOS Apps"), new P("#C13S05","Internal Message Passing"), new P("#C13S06","Message Passing Between VMs"), new P("#C13S07","Shared Memory and Copying Data Between VMs"), new P("#C13S08","Launching a DOS box"), new P("#C13S09","Launching Windows Applications from DOS"), new P("#C13S10","The DOS Box Title, Print Intercepting, and Everything"))));