Eclectic Engineering, Inc.

[Home] [Download] [Errors in Device Driver Book] [Resume] [Eclectic Bookstore] [Links] [Training] [Book]

Text and Listing Errors

Page xlvi (Preface)  Footnote 4    Change  "since I was deeply interested in debugging works" to "since I was deeply interested in how debugging works"  

 

fixed in second printing
Page xlvii (Preface) In the Acknowledgments Brian Catlin's name is misspelled and  Tom Carr should be added  

 

fixed in second printing
Page 143  IRP_MJ_CANCEL does not exist.  The Cancel routine is not called via an IRP major function.  A Driver may provide a cancel entry point to the I/O system. 
Change "Devices that do not support IRP_MJ_CANCEL" to "Devices which do not provide a cancel entry point"
Change "incoming IRP_MJ_CANCEL IRP" to "IRP parameter passed to the cancel entry point"
 
Page 177 In Table 9.3 the Key AutoAdminLogon is misspelled as AutoAdminLogin.  AutoAdminLogon is the correct key name.  
Page 418 Change config.u.type0.BusAddresses[1]  to config.u.type0.BaseAddresses[1]

 

 
Page 419 Jim Boemler has a new web site.  His pcicode.h file is now available from http://www.yourvote.com/pci   
Page 437 Listing 22.2  Change switch(Irp->Type) to

PIO_STACK_LOCATION irpSp = IoGetCurrentIrpStackLocation(Irp);
switch (irpSp->MajorFunction)

Also note that  myDriverStartRead()  myDriverStartWrite()  and myDriverStartDeviceControl() routines must set IoStatus, call IoCompleteRequest() and IoStartNextPacket() 

 

fixed in second printing
Page 480  In the last two lines. change "The Filter Driver can create Associated IRPs by calling IoMakeAssociatedIrp to create the new IRP." to "The highest-level driver can create Associated IRPs by calling IoMakeAssociatedIrp to create the new IRP."

"Filter Driver" is changed to "highest-level driver".

 

fixed in second printing
Page 492 Table 24.1  The value of LOW_PRIORITY the idle thread priority is shown as 0  The correct value is 1.  The Zero page thread is priority 0 and should have been included in this table.

 

 
Page 631 Change switch(Irp->Type) to

PIO_STACK_LOCATION irpSp = IoGetCurrentIrpStackLocation(Irp);
switch (irpSp->MajorFunction)
 
Page 634   Change IoStartNextPacket(deviceObject); to IoStartNextPacket(deviceObject, FALSE); fixed in second printing
Page 626 Listing 27.7
and
Page 628 Listing 27.8
The delay parameter passed to KeDelayExecution is wrong.  The parameter should be negative for an absolute delay.

 

 
     
     
     

 

 

Index Errors

  The index entry for USBDI should reference pages 771 and 750 as well as754.
  The index entry for IOCTL_INTERNAL_USB_SUBMIT_URB is misspelled as IOCTL_INTERNAL_USB_SUBMIT_USB for 2 entries
Page 32  Index entry for Johnson Hart missing fixed in second printing