Release 2.7
DriverStudio is a suite of tools that simplifies development, debugging, and testing of device drivers for Microsoft Windows. The following tools are included in the complete DriverStudio release.
SoftICE is a powerful system-wide debugger that supports source level debugging of any software, driver, service, and most bios code on either a single or dual machine configuration. SoftICE not only debugs SYS files and VxDs, but also can debug Ring 3 applications as well as system internals and through-ring transitions.
DriverWorks includes a complete framework for device driver development for both Windows NT 4 and Win32 Driver Model (WDM) drivers. DriverWorks includes a sophisticated code-generation tool (DriverWizard) along with class libraries and sample drivers that support the development of device drivers in C++.
DriverNetworks is a suite for Windows network driver developers. In its core, DriverNetworks is a C++ class library for NDIS drivers and TDI clients (DriverSockets). DriverNetworks also comes with the Network Driver Wizard to jump start an NDIS Miniport, Intermediate, or Protocol Driver project. It allows you to quickly generate all the files necessary to build, install, and debug your NDIS driver written using the DriverNetworks C++ class library.
VTOOLSD supports device driver (VxD) development for Win9X (Windows 95 and Windows 98) systems. VTOOLSD includes code-generation tools, run-time and interface libraries, and an extensive collection of sample drivers that can be used as the basis for a wide variety of device drivers.
DriverWorkbench provides visibility into system crash dump files and live events. Integrated with BoundsChecker Driver Edition, DriverWorkbench exposes data collected by BoundsChecker Driver Edition before a system crash or as it is logged. This unique view of the system offers an unprecedented ability to identify problems by viewing a trace of system activity that precedes a crash.
BoundsChecker Driver Edition provides parameter validation and system instrumentation that can monitor and track all interactions between various device drivers and other operating system components. The Configuration Wizard provides fine-tuned control over the type and amount of information that BoundsChecker Driver Edition collects.
TrueTime Driver Edition is a performance analysis tool that allows Windows NT/2000/XP device driver writers to identify and fix a driver's performance bottlenecks. TrueTime Driver Edition has been engineered to meet the needs of device driver and kernel-mode code developers. The Configuration Wizard provides control over which drivers and functions to profile. DriverWorkbench is the interface for analyzing results collected by TrueTime Driver Edition.
The best way to make sure you test all your code is to use a coverage tool. TrueCoverage Driver Edition helps you detect which parts of your code have been tested, and which still need to be tested. You can save testing time and improve code reliability by measuring and tracking code execution and stability during development. TrueCoverage makes it easy to collect coverage data for your driver, view that data in the context of your source code, and merge data accumulated over multiple sessions.
DriverAgent is not included with this release.
FieldAgent is no longer available as a separate selection on the DriverWorkbench menu. Its functionality has been incorporated into the Unified Configuration Dialog.
Note: While we recommend that you develop drivers with DriverWorks or VToolsD, the DriverStudio tools are also designed to work well with the Microsoft DDK.
Return to:
Note: You can verify that you have Release 2.7 installed on your computer by issuing the ver command at the SoftICE command line prompt.
Return to:
DriverStudio now ships with a tool which will allow for retrieval of symbols from any Symbol Server Site. The purpose of Symbol Retriever is to download debug files from a Symbol Server site and optionally translate and load the information into SoftICE.
Symbol retriever can be run on any operating system. It will retrieve symbols for any Windows NT based operating system. All you need are the binaries from the original OS. For example, Symbol Retriever can be run on a Win2K system and retrieve symbols for WinXP system.
This program has the ability to access any Symbol Server Site. By default it will download from the Microsoft Symbol Server site.
Return to:
Symbol
Retriever Utility. This utility allows you to download symbols,
and optionally, will translate and load the symbols into SoftICE
Display physical memory in the data windows. To display physical memory in the data windows, use the "–p option" on any of the dX commands (i.e., dd, db, dw). Note that if your hardware functions as “reset on read,” opening a physical data window will cause a data reset. SoftICE reads in 16 bytes of data per line of data window. No additional caching/read ahead is done.
Native support for Windows.NET build 3621. If API Hook failures occur, you will need to use NTSYMBOLS=ON and load the proper symbols.
Quick support of Unreleased/Beta operating systems.
Improved Windows XP support.
Support for single processor APIC machines.
Decoding of all processor feature bits.
User-selectable output format.
SET TYPEFORMAT N - This will define the layout and format of the local and watch windows.
The default type format can be changed by adding the variable TYPEFORMAT to winice.dat. Valid TYPEFORMAT values are 1, 2, 3.
SET LONGTYPENAMES [ON|OFF] - When set to OFF, "unsigned longs" will be shown as "ulong", "unsigned chars" as "uchar", and so forth. The default is OFF.
Support for Intel Hyperthreading processors.
Relative Window resizing.
In the RC1 release, this command has been enhanced to allow for spaces in between the +/- and N number and ‘WC + 5’ is now permitted.
WC +N will increase the code window by N rows; wc –n will decrease the code window by N rows.
All window sizing commands support relative sizing.
Enhanced C++ support.
SoftICE now supports the C++ namespace::class::method syntax for symbols. Any number of :: operators are now allowed within a symbol name.
Reading and writing of x86 and AMD K7 MSRs (Model Specific Registers).
New command: MSR displays or changes processor MSRs.
Issuing the MSR command by itself will display all known common MSRs. along with their values.
MSR startreg endreg – Displays a range of readable MSRs.
MSR –w regh regl value – Allows for writing to an MSR.
MSR –u startreg endreg will dump all MSRs within the range.
Enhanced USB command.
The USB -schedule command will now show only active TDs by default.
USB -schedule -verbose will display all TDs in the schedule, active or not.
Enhanced BPx commands.
When SoftICE pops up on a user breakpoint, the breakpoint number is shown.
Breakpoints can be cleared, disabled, enabled, or edited quickly after a popup. The 'bc', 'bd', 'be', and 'bpe' commands will now act on the current breakpoint if no breakpoint number is specified, allowing breakpoints to be cleared, disabled, enabled, or edited quickly after a popup.
Support for additional KD Extensions.
Specifically support has been added for the ACPI KDExtension.
Improved SMP support.
Ability to remap keyboard mappings to non-QWERTY layout keyboards.
Keyboard mappings assumes that you are using a ‘QWERTY’ keyboard layout. If you happen to be using a non-QWERTY layout keyboard, you will need to copy the included keymap.exe utility program into your \winnt\system32\drivers directory and execute keymap. If SoftICE is currently running, you will need to reboot your system for the changes to take effect. Running keymap will remap all the keyboard scan codes to the keyboard layout that is currently being used by Windows. The one key combination that cannot be remapped is the popup hotkey. The popup hotkey will always be the third character from the left on the second row above the space bar. To reset the keyboard scancodes back to their defaults, run 'keymap /USA.'
Note: For new bug fixes and additional information, see the SoftICE Readme.
Return to:
Note: You can use DriverWorks to build 64-bit drivers for the Windows XP 64-bit operating system. (For build details, please refer to the DriverWorks Help topic, Building Drivers with the XP DDK.)
New Driver Wizard configurations.
Three new configurations have been added. You can now easily generate WDM Filter drivers based on KWdmFilterDevice class. Support for the filter co-installer DLL and the .INF is included, too.
Two more trivial configurations added, simple and empty driver projects. Those give a jump-start for a developer not willing to use DriverWorks framework, but willing to use “C++ as a better C”, or design a custom framework. The developer can still include and use general purpose DriverWorks classes (such as interlocked containers, STL, etc.) without the overhead of the DriverWorks driver/device dispatch framework.
C++ exception support for Kernel Mode drivers.
A true C++ exception handling syntax can now be used to catch both structural (SEH) and custom (user-defined) C++ exceptions.
DriverWorks run-time now includes support for C++ try, catch and throw, which can be used in both NT and WDM drivers in place of compiler-specific _try and _except constructs. (Please refer to the online documentation for how to enable C++ EH support in your driver.)
Kernel Mode drivers can now be built under Microsoft Visual Studio .NET IDE.
You can covert existing VS 6 driver projects (.dsp) and DDK driver projects (sources) into VS .NET “solutions” files using the updated SrcToDsp utility and take advantage of the rich VS .NET IDE to design and maintain your driver project.
The build environment setup utility, SetDDKgo, has been updated to detect both VS6 and VS .NET applications and launch them under the DriverWorks and DDK-compatible environment.
Note: This release provides limited support for VS. NET IDE. Neither the Driver Wizard nor any other DriverStudio add-on buttons are supported inside the IDE. No 64-bit configurations are supported.
Visual Studio .NET “solutions” files are available for DriverWorks library.
You can use VS .NET IDE to browse and navigate the DriverWorks class library hierarchy.
Driver Monitor has new enhancements.
The new “clock” option allows to display either absolute or relative time in the timestamp column of the trace viewer window.
Two new icons on the tool bar allow easier access to filter and channel dialogs.
DriverMonitor now warns when the user attempts to open a channel that is transmitted to a remote machine, or when a remote machine requests a channel that is open in an application on the local machine.
Driver Monitor supports IA64.
Shipped with this release is the kernel trace viewer combo for a 64-bit processor running the Windows XP 64-bit edition. The install instructions are found on the DriverStudio CD, in IA64\Monitor directory.
EZDriverInstaller error-reporting improvements.
Now displays more detailed error text on install failure.
New classes and methods.
KException and KExceptionAccessViolation classes.
KInterruptSafeFifo::IsValid().
KDevice::operator delete(void*, POOL_TYPE).
KSystemThread::Wait().
KUsbPipe::BuildInterruptTransfer() changed signature to allow to define the type of the endpoint.
New and updated samples.
Kbfilter sample (non-framework) has been updated to demonstrate the use of C++ exceptions.
HidMouse sample demonstrates the use of new GENERAL_POLICY:: m_DeletePdoOnRemove flag to control the behavior of the base class in regard to IRP_MN_REMOVE_DEVICE processing.
Note: For new bug fixes, see the DriverWorks Readme.
Return to:
Note: You can use DriverNetworks to build 64-bit drivers for the Windows XP 64-bit operating system. (For build details, please refer to the DriverNetworks Help topic, Building Drivers with the XP DDK.)
NDIS 5.1 support.
Both class library and Network Driver Wizard provide support for the new NDIS 5.1 features introduced with Windows XP.
A number of samples have been updated to demonstrate the new features in NDIS miniport, intermediate and protocol drivers.
C++ exception handling support for NDIS Drivers.
A true C++ exception handling syntax can now be used to catch both structural (SEH) and custom (user-defined) C++ exceptions.
DriverWorks run-time now includes support for C++ ++ try, catch and throw, which can be used in both NT and WDM drivers in place of compiler-specific _try and _except constructs. (Please refer to the online documentation for how to enable C++ EH support in your driver.)
NDIS drivers can now be built under Microsoft Visual Studio .NET IDE.
You can convert existing VS 6 driver projects (.dsp) and DDK driver projects (sources) into VS .NET “solutions” files using the updated SrcToDsp utility and take advantage of the rich VS .NET IDE to design and maintain your driver project.
The build environment setup utility, SetDDKgo, has been updated to detect both VS6 and VS .NET applications and launch them under DriverWorks and the DDK-compatible environment.
Note: This release provides limited support for VS. NET IDE. Neither the Network Driver Wizard nor any other DriverStudio add-on buttons are supported inside the IDE. No 64-bit configurations are supported.
Visual Studio .NET “solutions” files available for DriverNetworks library.
You can use VS .NET IDE to browse and navigate the DriverNetworks class library hierarchy.
New classes and methods.
KNdisFilterAdapter51 class .
KNdisAdapterTraits:: MiniportCancelSendPackets().
KNdisMiniDriver::DriverObject().
KNdisMiniDriver::operator delete(void*, A*).
KNdisPacket::CopyFrom() signature modified to allow for “safe” version (XP).
KNdisPacket::GetFirst() signature modified to allow for “safe” version (XP).
KNdisPacket::GetCurrentStack().
KNdisPacket::CANCEL_ID().
KNdisPacket::GetPoolHandle().
KNdisPacketCancelId class.
KNdisWrapper:: PnPEventNotify() and KNdisWrapper::CancelSendPackets().
KRoutingTable:: IP_ROUTE_TYPE and KRoutingTable:: IP_PROTO_TYPE enums.
New and updated samples.
New USBNIC sample demonstrates an implementation of NDIS WDM miniport for an USB NIC.
New StlFilter sample demonstrates the use of the Standard Template Library (STL) in an NDIS5 filter driver to keep track of visited web URLs.
VDev sample is updated to support device object creation for Windows 98 as well as W2K/XP targets. Includes code demonstrating C++ Exception Handling usage in an NDIS driver.
WdmVDev sample is updated to support NDIS 5.1 miniport features such as PnP notification and send packet canceling.
ImDelay sample is updated to support NDIS 5.1 intermediate driver features such as send packet canceling.
NmPacket sample is updated to support NDIS 5.1 protocol driver features such as send packet canceling.
NmInt sample is updated to support NDIS intermediate driver installation on NT4. Also, made multiple fixes and code improvements for Windows XP installations.
Note: For new bug fixes, see the DriverNetworks Readme.
Return to:
Note: See the VtoolsD Readme for recent VTOOLSD bug fixes.
Return to:
Changes to the disassembly window for easier debugging.
Mixed mode of source and disassembly now available.
Opcode bytes can now be displayed.
A history of addresses can be displayed for easier navigation.
The memory window now has new decimal display formats.
New symbol loading options available for operating systems. Specify OS symbol paths and DriverWorkbench will automatically use the correct OS path when loading dump files.
Stack window has been modified to include these new columns:
EIP
EBP
Arguments
The event view now supports the new leak events that BoundsChecker generates. For drivers with leaks, the event view will show an event for the driver stating there were leaks. Expand this event to get a list of all memory leaks in the driver.
Loaded Symbol Tables View. A new dialog shows what symbol tables are currently loaded and where those symbol tables are found.
Note: For new bug fixes, see the DriverWorkbench Readme.
Return to:
Note: See the Readme Archive for other BoundsChecker features recently introduced.
Ability to log BoundsChecker events to a file – By turning this option on, BoundsChecker will log events to BCHKD.EVT, a text file that can be viewed with any text viewer. The maximum file size of this file is also adjustable, with a default size of 1 MB.
Note: Due to the increased number of events that BoundsChecker can log, a limitation has been placed on the number of drivers BoundsChecker can watch.
Multiple Acquisitions of Spinlocks – BoundsChecker now monitors for multiple acquisitions of spinlocks.
Improved memory and resource tracking.
Ability to reset memory and resource tracking events – Before Release 2.7, memory and resource events were permanently in the event list.
Individual events for memory and resource leaks – Previously, there was one error message stating that a driver had leaks. Now, there is a separate event for each memory leak. This event tells how large the block is and from where it was allocated.
Corrected a system hang at start-up if all drivers were selected.
Repaired a page fault in BoundsChecker when running HCT.
Fixed a bug in the hooking code when USBD was loaded at different addresses.
Corrected a blue screen condition on Windows XP during startup.
Return to:
Note: See the Readme Archive for other TrueTime features recently introduced.
NDIS Packet List – The new packet list display logs each NDIS packet along with additional timing details throughout the transaction.
URB List – The new URB list logs all URBs sent from USB drivers with the timestamp, URB function, and the sending function.
IRB List – The new IRB list logs all IRBs sent from Firewire drivers with the timestamp, IRB request, and the sending function.
New dispatch routine tracking from NdisMRegisterDevice – Prior to Windows XP, the IRP major function table had to be initialized within a drivers DriverEntry routine. Now NDIS miniports can call NdisMRegisterDevice to install IRP handlers. TrueTime will now patch the IRP dispatch table from NdisMRegisterDevice, even when it is called outside of DriverEntry.
Patch Standard Drivers – There is now an optional override to not patch StartIO, AddDevice, DriverUnload, or the IRP Dispatch table. This is selectable from the TrueTime | General page of the configuration and is selected by default
Patch NDIS Miniports – New for Version 2.7 is the Patch NDIS Miniports option. Selecting this option on the TrueTime | General configuration page will allow TrueTime to patch the NDIS MiniportCharacteristics function table.
Patch Display and Printer Drivers – Also new in 2.7 is the option to profile video driver and printer drivers. Selecting this option on the TrueTime | General configuration page will patch the DrvEnableDriver entry point as well as the Graphics DDI function table.
Clear Performance Log improved – DriverEntry will now be cleared when a matching unload routine is found.
Save data to text file – The Function Stats page can now be saved in a comma separated value format from the File menu.
Filter DriverWorks and DriverNetworks classes – These class libraries can now be filtered out of the Function Selection page of the Configuration dialog.
Irp Context Tracking – Additional IRP detail can be captured by indicating which function parameters are IRP pointers within the TrueTime | Select functions page of the DriverStudio Configuration. Once analyzed these hooked functions will be displayed within the lower Details pane of the IRP List.
DriverEntry and DrvEnableDriver no longer deselectable – DriverEntry and DrvEnableDriver are always hooked for profiling. Now they are not deselectable in the TrueTime | Select functions page of the DriverStudio Configuration.
Return to:
Note: See the Readme Archive for other TrueCoverage features recently introduced.
Windows XP Support – TrueCoverage now supports instrumentation of drivers built with the new WinXP DDK.
Note: For new bug fixes, see the TrueCoverage Readme.
Return to:
It is a good idea to backup your system before you install the product. The following items are required to install and run DriverStudio.
Processor: PC-compatible Intel x86 or AMD processor.
OS: Microsoft Windows NT 4.0 (Service Pack 3 or later), Windows 2000, or Windows XP. (Note that some tools do support Windows ME, Windows 98, and Windows 95.)
RAM: OS dependent.
Drive: Disk 'footprint' depends on options selected and platform configuration. (A typical installation requires approximately 87 MB).
Other Requirements: DriverWorks and DriverNetworks require that the Microsoft DDK be installed on your computer.
Return to:
Important: All previous versions of DriverStudio must be COMPLETELY uninstalled prior to the installation of this software.
DriverStudio 2.7 has a install program based on the Microsoft Windows Installer. This install program provides three main installation options:
Full Installation – Allows single machine debugging and analysis. Also includes both Host and Target components for distributed operation. Each Full Installation requires a license.
Host Only – Installs only the components necessary for debugging and analysis of remote data. Each installation requires a license.
Target Only – Installs only the remote debugging core and the data collection components. Allows remote control from a Single or Host installation. No license is required for Target installations.
The Unified Configuration Dialog helps you configure your DriverStudio components. Help is available for all settings in this dialog. (See also "Configuring DriverStudio Components.")
Remote access to a target machine can now be disabled by unchecking ‘Allow remote access’ in the RemoteAccess/Security page on the Unified Configuration Dialog. A reboot is required to apply the change.
The installation of DriverWorkbench or SoftICE will place an icon on the desktop called DriverStudio Remote Data. This icon is not a shortcut. It is a Namespace Extension and is used by the DriverWorkbench and SoftICE distributed components. If you will not be connecting to any remote computers running DriverStudio, you can safely remove the Namespace Extension and the icon on the desktop by running regsvr32 /u DSRNamespace.dll. (See the DriverWorkbench readme for a more detailed description of the DriverStudio Namespace Extension.)
To remove DriverStudio, use the Add/Remove Programs applet in the Control Panel. Choose the components that you want to remove. Removing DriverStudio performs the following actions.
Deletes application files from the installation directory and sub-directories
Removes DriverStudio registry entries
Deletes the DriverStudio program folder and items
Note: After you uninstall DriverStudio, it is a good idea to reboot your system.
In some cases you might want to develop and test on the same system. In other cases, you might want to test your device drivers on a system separate from your development machine. Install one or more of the following tools on your development system:
DriverWorkbench
VTOOLSD
DriverWorks
DriverNetworks
Install the following tools on your test system (can be the same machine as your development system):
SoftICE
BoundsChecker Driver Edition
TrueTime Driver Edition
TrueCoverage Driver Edition
Note: Your license agreement permits you to use the DriverStudio on two machines only if you are the sole user of both machines.
Return to:
The Unified Configuration Dialog controls settings for all DriverStudio configurable components including SoftICE and BoundsChecker. It is accessible from the DriverStudio and SoftICE program menus. It is also accessible from within DriverWorkbench under Tools/Settings. The configuration dialog can be used to modify settings on both local and remote machines. This functionality is also available from the command line using the –target MachineName command line switch. The Remote Access/Security page has been added to the configuration dialog. This allows the user to control security settings on a target machine. These settings include the ability to deny all remote connections to a target machine as well as to deny remote reboot access for a target machine. Help is now available for all dialog settings. If you want to analyze crash dump files, be sure to see Analyze Crash Dump Files in the DriverWorkbench online Help.
Return to:
Note: DriverStudio documentation is presented in Adobe PDF format. If you have not yet installed the Adobe Acrobat Reader on your system, you can find the setup at http://www.adobe.com/products/acrobat/readstep2.html.
\Compuware\DriverStudio\SoftICE\Using SoftICE.pdf and \Compuware\DriverStudio\SoftICE\SoftICE Command Reference.pdf are online versions of the manuals. \Compuware\DriverStudio\ Help\CommRef.chm is a help file version of the SoftICE Command Reference document. You can access SoftICE Command Reference help from the Start menu. The readme.htm file describes recent changes.
\Compuware\DriverStudio\SoftICE\Using SoftICE.pdf describes how to use BoundsChecker Driver Edition with SoftICE. \Compuware\DriverStudio\Help\sysalyze.chm describes how to use BoundsChecker Driver Edition with DriverWorkbench. You can use the Help buttons in the Configuration Wizard to get help for each step.
\Compuware\DriverStudio\Help\sysalyze.chm describes how to use TrueTime Driver Edition with DriverWorkbench.
\Compuware\DriverStudio\Tcd\TrueCoverage Getting Started.pdf describes how to use TrueCoverage Driver Edition with DriverStudio. \Compuware\DriverStudio\Help\CovMain.chm is the help system for TrueCoverage Driver Edition.
\Compuware\DriverStudio\Help\tools.chm describes how to use the DriverStudio Tools.
\Compuware\DriverStudio\Help\sysalyze.chm is the help system for DriverWorkbench. You can access the help system from within the tool using the Help menu, Help buttons, and F1. The readme.htm file describes recent changes.
\Compuware\DriverStudio\DriverWorks\Using DriverWorks.pdf is the online version of the manual. \Compuware\DriverStudio\Help\vdw.chm is the help system for DriverWorks. You can access the help system from the Start menu. The readme.htm file describes recent changes.
\Compuware\DriverStudio\Help\dnw.chm is the help system for DriverNetworks. You can access the help system from the Start menu. The readme.htm file describes recent changes.
\Compuware\DriverStudio\VtoolsD\Using VtoolsD.pdf is the online version of the manual. \Compuware\DriverStudio\Help\vtd95.chm is the help system for VTOOLSD. You can access the help system from the Start menu. The readme.htm file describes recent changes.
Return to:
The following notes pertain to DriverStudio.
Installation
on Windows 9x platforms requires updated Microsoft Installer (MSI) file.
MSI 2.0 is required in order to install DriverStudio V2.7 on Windows
9x (Win95, Win98, WinME) systems. If you attempt to install DriverStudio
V2.7 on a Windows 9x system with a version of Microsoft Installer earlier
than MSI 2.0, a dialog will pop up indicating that MSI 2.0 is not installed.
MSI 2.0 is required to continue and is available for download at:
http://www.microsoft.com/downloads/release.asp?releaseid=32831
Please exit, install MSI 2.0, and then re-run the setup.
You must have IE V4.01SP2 (or above) installed on Windows NT4 (SP3) systems in order to install DriverStudio V2.7. If you attempt to install DriverStudio v2.7 without having IE V4.01SP2 (or above) installed, "Internal error 2738. SetDSProperties." will occur and the installation will be aborted.
Installation on Windows 95 platforms require updated system files. Install does not work properly on Windows 95 if needed system files are not previously updated. This can be resolved by first installing Windows Sockets 2 and then having VS6.0 installed on the system prior to installing DriverStudio.
DriverAgent is not being shipped with this release.
Do not use the InstallShield Wizard Program Maintenance Repair or Modify options. Use of the InstallShield Wizard Program Maintenance Repair and Modify options is not recommended as the results of the repair/modify may not be satisfactory. We recommend that you completely remove and reinstall the DriverStudio software.
Problems reported when printing from Help topics. The online HTML-help files associated with the DriverStudio products allow you to print help topics. You can choose to print a single topic, or to print all topics under a selected heading. Selecting the second choice (printing all topics under a selected heading) will sometimes result in the display of an error-message dialog. This is a bug in the HTML-help development tools, which should be fixed in a future release. (Note that the topics are still printed correctly, you just have to click your way through one or more annoying error-message dialogs to make them go away.) Printing a single topic proceeds without errors.
Remote operations considerations:
If you are viewing DriverStudio Settings for a remote target and BoundsChecker and/or TrueTime settings are unavailable because "Access is Denied"(click on BoundsChecker area of TOC and view error message in right pane), make sure that you are logged into the Host PC with a username AND password that are the same as the username AND password for a member of the Administrators group on the Target PC.
To view remote settings on a Win9x target machine, the target must be configured for user-level access control instead of the default share-level access control. This can be changed from the control panel/network applet. Select the access control tab and change it to User-level access control. Specify a Windows NT domain name under 'obtain list of users and groups from'. Anonymous access to remote targets is not supported.
Remote TrueTime configuration does not support selecting user-defined functions to monitor. User-defined function selection must be configured on the target machine.
On Win95 and NT 4 platforms without Internet Explorer Active Desktop, the DriverStudio Remote Namespace cannot be restored using the DriverStudio Configuration dialog after it has been disabled. Re-enabling DriverStudio Remote explorer integration requires running regsvr32 on DSRNamespace.dll.
If you install Host-only on NT 4, Win2K, and/or WinXP platforms and are unable to receive remote debug messages using Driver Monitor or the DriverWorkbench Output Window, make sure that the DriverStudio Remote Control service is started. Set this service to Automatic Start so the problem does not reoccur.
On Windows XP platforms, Internet firewall protection must be disabled in order for DriverStudio remote components to function correctly. To turn off this protection, perform the following steps:
The following notes pertain to SoftICE.
Context Switch problem in SoftICE. If a thread is switched in the thread window, and if a non top-level stack entry is chosen in the stack window, the context will switch to the top-level context when you switch into the data window or code window. There is currently no workaround and a solution is being investigated for a future release of SoftICE.
Stuck Right-Click Mouse Menu on popup. During certain periods of the initialization process if SoftICE is popped up due to a fault or a breakpoint, it is possible for the mouse’s right-click popup menu to appear in a popped up state and it seems that the system is locked. However, the system is not locked. Instead, it is stuck in a “waiting state.” There is no workaround once the problem occurs. If you run into this situation, issue the “set mouse off” command either in SoftICE or on the init line. Once you are past the problem point, you can then issue a “set mouse on." A solution is being investigated for a future release of SoftICE.
Crash when using Driver Verifier and Remote Com Port debugging. There is currently an incompatibility between Driver Verifier and NMFilter. This will result in a crash if a comport is selected in the DriverStudio Settings Application. The crash will not occur on all machines or in all situations. If a crash does occur on your system, boot into safe mode, go to DriverStudio Settings, select Serial Debugging, and choose a ComPort of "none." This issue is being investigated and will result in a new nmfilter.sys being available for download.
Starting SoftICE Failure in System Mode and Automatic Mode on XP. Some users are reporting that when running SoftICE on Windows XP, if SoftICE is set to start in System or Automatic mode, SoftICE will not start. This is most likely due to XP’s deferred driver loading for quicker boots. The problem is being investigated. The current workaround is to set SoftICE to start either in Boot Mode or Manual Mode.
Win9x users must set SoftICE video memory size to a multiple of 1024 Kbytes. Failure to do so will result in a system crash. This will be fixed in a future release of SoftICE.
SoftICE does not return the keyboard LEDs to their previous Windows settings when popping down. This will be fixed in a future release of SoftICE.
Windows XP users must close the Symbol Loader Workspace that contains the file or close Symbol Loader before updating the .SYS/PDB file. If a PDB (SYS) file is in use by SoftICE Symbol Loader, it will be write locked. Then, if you try to recompile the .SYS/PDB, you will get an error stating that the "PDB file can not be opened." To correct this condition, close the Symbol Loader Workspace that contains the file or close Symbol Loader before updating the .SYS/PDB file.
USB keyboard operations:
Certain
USB keyboards do not respond to the USB get_report
request properly. (On popup, SoftICE uses this request to determine
if a key state has changed. This, in turn, allows SoftICE to support typematic
on keys which cause the debugger to pop down, such as F8 and F10 in the
default keyboard configuration.) If you are using one of these keyboards,
you will see an error message from SoftICE immediately after a popup.
To work around the problem, you will need to add the following DWORD registry
key on Windows NT/2000/XP, and set its value to 1:
\HKLM\System\CurrentControlSet\Services\ntice\UsbDisablePopdownTypematic
For Win9x/Me platforms, add
the following entry to your WINICE.DAT file:
USB_DISABLE_POP_TYPEMATIC=ON
This will disable typematic when SoftICE pops down. Typematic will
still work on all keys that do not cause SoftICE to pop down.
When using
a USB keyboard with SoftICE, Windows will display the following message:
**** CHATTERY KEYBOARD : Keyboard is sending useless reports. Tell
'em to fix it.
This message is caused by the SoftICE keyboard hook code, which prevents
Windows from seeing SoftICE's hotkey. This message is normal when using
a USB keyboard with SoftICE, and can be ignored.
The following notes pertain to Frameworks.
Multiple DDK and/or Target OS configuration considerations:
If you switch between different DDKs and/or Target OS configurations within the IDE, you can occasionally run into a link error like:
LINK: fatal error LNK1207: incompatible PDB format in …; delete and rebuild.
This is a linker glitch due to incompatible PDB formats used by the VC 6.0 and XP DDK build environments. To get around this, you have to manually delete the specified .pdb file and rebuild the project.
Win9x users should use the Win2K DDK build environment to build DriverNetworks TDI Client libraries and samples.
The following notes pertain to DriverWorkbench.
Windows XP extension DLL format not supported. DriverWorkbench does not currently support the new extension DLL format introduced with Windows XP. For now, you must use the old-style DLL extensions with DriverWorkbench.
FieldAgent is no longer available as a separate selection on the DriverWorkbench menu. FieldAgent functionality has been incorporated into the DriverStudio Unified Settings Dialog.
The following notes pertain to BoundsChecker.
When using the file logging, it is recommended that you turn off the events Int0E and Int2E. Too many events early in the boot process will cause BoundsChecker to stop logging events to the file.
The following notes pertain to TrueTime.
When monitoring the performance of drivers that load at boot time (StartMode = 0), the Output Directory for Performance Log needs to be located on the system partition. The file system is not available for other partitions that early in the boot process.
Return to:
Customer Service is available to answer any questions you might have regarding upgrades, serial numbers and other order fulfillment needs. Customer Service is available from 8:30am to 5:30pm EST, Monday through Friday. Call:
In the U.S. and Canada: 1-888-283-9896
International: +1-603-578-8103
Technical Support can assist you with all your technical problems, from installation to troubleshooting. Before contacting Technical Support, please read the relevant sections of the product documentation and the Readme files.
You can contact Technical Support by:
E-Mail: Include your serial number and send as many details as possible to:
World Wide Web: Submit issues and access additional support services at:
http://frontline.compuware.com/nashua/
Fax: Include your serial number and send as many details as possible to:
1-603-578-8401
Telephone: Telephone support is available as a paid* Priority Support Service from 8:30am to 5:30pm EST, Monday through Friday. Have product version and serial number ready.
In the U.S. and Canada, call: 1-888-686-3427
International customers, call: +1-603-578-8100
*Installation Issues: Technical Support handles installation and setup issues free of charge.
When contacting Technical Support, please have the following information available:
Product/service pack name and version.
Product serial number.
Your system configuration: operating system, network configuration, amount of RAM, environment variables, and paths.
The details of the problem: settings, error messages, stack dumps, and the contents of any diagnostic windows.
The details of how to reproduce the problem (if the problem is repeatable).
The name and version of your compiler and linker and the options that you used in compiling and linking.
Return to:
Note: This section contains README information from the previous releases of Compuware DriverStudio.
========================================
Release 2.6
What's New in This Release?
Important Release Information
Readme Archive
Note: You can verify that you have Release 2.6 installed on your computer by issuing the ver command at the SoftICE command line prompt.
Release 2.6 offers enhancements for the following DriverStudio components:
SoftICE
DriverWorks
DriverNetworks
VToolsD
DriverWorkbench
BoundsChecker
Return to:
Note: See the Readme Archive for the SoftICE commands and features introduced in Release 2.5.
Windows XP Support. Release 2.6 of SoftICE supports the Windows XP gold release.
New Symbols. Supports symbols in the VC 7 PDB format.
Return to:
Note: You can use DriverWorks to build 64-bit drivers for the Windows XP 64-bit operating system. (For build details, please refer to the DriverWorks Help topic, Building Drivers with the XP DDK.)
Microsoft Visual Studio 6.0 IDE support for Windows XP DDK Build Environment. You can now use the XP DDK compiler and linker from within the IDE without resorting to command line builds. The DriverStudio add-in automatically detects the DDK version and configures the build environment appropriately. It also automatically detects inconsistencies between the current project settings and the DriverWorks/DriverNetworks libraries used. In addition, it also automatically detects IA64 configurations and uses the XP DDK 64 bit compiler for these configurations. This makes it possible to batch build all configurations for i386 and IA64.
DriverWorks Wizard supports Windows XP DDK. The DriverWorks wizard has been updated to generate XP DDK-compatible driver projects. This includes support for both Visual Studio project files (.dsp) and DDK project files (sources). The projects can be built either from within the IDE or by using the DDK build utility. Backward compatibility with the earlier DDKs has been preserved as well.
New Build Setting Dialog. The new Build Setting Dialog in the IDE allows switching between multiple DDK and target OS versions without leaving the IDE.
SetDDKGo utility supports Windows XP DDK. The SetDDKGo utility has received an improved GUI. This GUI now allows you to easily choose a DDK, target OS (XP DDK only), and several other settings for the IDE. The utility also allows you to save settings as shortcuts in the new Development Environments folder in the DriverStudio program group.
SrcToDsp ulitity support for Windows XP DDK. The utility now generates XP DDK-compatible .dsp projects from sources files. It also has a simplified and improved GUI as well.
DriverWorks samples converted to support Windows XP DDK. The samples can be built against either the Windows XP DDK or earlier DDKs.
New command line tool, DspToDsp, has been added to convert .dsp files for Windows XP DDK. DriverWorks and DriverNetworks project files (.dsp) from pre-XP times are not compatible with XP DDK. If you have a project generated with DriverStudio 2.5 or earlier, you can use DspToDsp to convert your file.
Driver Monitor tool (Monitor.exe) now intercepts the user mode OutputDebugString. The user mode debug trace intercept is implemented as a local channel (Win32) controllable as all the other trace channels. DbgPrintEx() API traces are intercepted on Windows XP. Finally, read-only memory protection no longer needs to be disabled for Monitor to work under Windows 2000 and Windows XP.
New Tools Help file, Tools.chm, consolidates help information for the miscellaneous Frameworks utilities into one document. Tools Help now covers Monitor, SetDDKgo, SrcToDsp, DspToDsp, EzDriverInstaller and SymLink tools, and contains help information on driver build environment management under Visual Studio IDE.
Added new method, KMemory::MapToUserSpaceEx() based on MmMapLockedPagesSpecifyCache.
Class KVxDCall added to allow WDM drivers to call into VxDs.
File kusb.h is fixed to include correct USB headers for XP DDK builds.
Fixed an assert in the IPFilterHook sample (which would happen if the system ip hook driver was not loaded).
Fixed compile bug caused when KIoRegisterSafe operator = wouldn't compile because it didn't return a value.
Return to:
Note: You can use DriverNetworks to build 64-bit drivers for the Windows XP 64-bit operating system. (For build details, please refer to the DriverNetworks Help topic, Building Drivers with the XP DDK.)
Microsoft Visual Studio 6.0 IDE support for Windows XP DDK Build Environment. You can now use the XP DDK compiler and linker from within the IDE without resorting to command line builds. The DriverStudio add-in automatically detects the DDK version and configures the build environment appropriately. It also automatically detects inconsistencies between the current project settings and the DriverWorks/DriverNetworks libraries used. In addition, it also automatically detects IA64 configurations and uses the XP DDK 64 bit compiler for these configurations. This makes it possible to batch build all configurations for i386 and IA64.
DriverNetworks Wizard supports Windows XP DDK. The DriverNetworks wizard has been updated to generate XP DDK-compatible driver projects. This includes support for both Visual Studio project files (.dsp) and DDK project files (sources). The projects can be built either from within the IDE or by using the DDK build utility. Backward compatibility with the earlier DDKs has been preserved as well.
New Build Setting Dialog. The new Build Setting Dialog in the IDE allows switching between multiple DDK and target OS versions without leaving the IDE.
SetDDKGo utility supports Windows XP DDK. The SetDDKGo utility has received an improved GUI. This GUI now allows you to easily choose a DDK, target OS (XP DDK only), and several other settings for the IDE. The utility also allows you to save settings as shortcuts in the new Development Environments folder in the DriverStudio program group.
SrcToDsp ulitity support for Windows XP DDK. The utility now generates XP DDK-compatible .dsp projects from sources files. It also has a simplified and improved GUI as well.
DriverNetworks samples converted to support Windows XP DDK. The samples can be built against either the Windows XP DDK or earlier DDKs.
New command line tool, DspToDsp, has been added to convert .dsp files for Windows XP DDK. DriverWorks and DriverNetworks project files (.dsp) from pre-XP times are not compatible with XP DDK. If you have a project generated with DriverStudio 2.5 or earlier, you can use DspToDsp to convert your file.
Driver Monitor tool (Monitor.exe) now intercepts the user mode OutputDebugString. The user mode debug trace intercept is implemented as a local channel (Win32) controllable as all the other trace channels. DbgPrintEx() API traces are intercepted on Windows XP. Finally, read-only memory protection no longer needs to be disabled for Monitor to work under Windows 2000 and Windows XP.
New Tools Help file, Tools.chm, consolidates help information for the miscellaneous Frameworks utilities into one document. Tools Help now covers Monitor, SetDDKgo, SrcToDsp, DspToDsp, EzDriverInstaller and SymLink tools, and contains help information on driver build environment management under Visual Studio IDE.
Added missing virtual method, KNdisFilterAdapter::OnTransferComplete(),to allow better managed partial receive packet indications.
Bug fixes and performance improvements in class KNdisTrace.
Fixed memory allocation bug in class KNdisHeap for W9x builds.
Fixed memory leak due to a bug in class KNdisTrace in the VDev sample.
Fixed packet counter bug in KNdisPacketPool, which could cause miniport configuration crashes in checked builds.
Fixed class KIrpPool to be WHQL-compliant (NDIS Test) for NDIS WDM configurations.
Sample WdmVNic has been fixed to be WHQL-compliant (NDIS Test).
Fixed a problem with NDIS 4 miniport builds (including NdisMRegisterUnloadHandler import) which would make the driver unloadable on NT 4 platforms.
Replaced busy wait with semaphore wait in KTdiClient destructor for W9x configurations.
Return to:
Note: See the Readme Archive for the VTOOLSD bug fixes introduced in Release 2.5.
Return to:
Note: See the Readme Archive for the DriverWorkbench commands and features introduced in Release 2.5.
WinXP Symbol Support – DriverWorkbench now supports symbols for the Windows XP DDK.
VxD Symbol Support – DriverWorkbench now supports symbols for VxDs.
DriverWorkbench now supports Windows XP.
The NDISKD extension DLL is now supported. NDISKD needs addresses for certain symbols, however, it passes the symbol names in a format that was not previously supported by the DriverWorkbench symbol engine.
DriverWorkbench now searches subdirectories for paths specified in the Symbol Search Path under View-Options.
Fixed "walking" the Object List on WinXP machines.
The Explain item on the Event Window context menu now functions correctly.
Windows XP Support – BoundsChecker for Drivers now supports the Windows XP gold release.
New WinXP APIs Accessible – BoundsChecker for Drivers now hooks the new XP APIs.
Thread walking was reworked in BoundsChecker to prevent occasional "blue screens" or invalid data reporting when used with WinXP.
If the pointer to an API was not present, BoundsChecker would incorrectly report an error. Most common if the size of the allocation was >= PAGE_SIZE.
On some Windows 2000 or Windows NT 4 machines, BoundsChecker was unable to find the head of the module list. This would prohibit BoundsChecker from hooking any boot drivers. Problem also exhibited itself in DriverWorkbench when a Capture System Information was performed. There would be no events and the Driver List would be empty.
A problem was fixed where calls to ExAllocatePoolWithTag could interfere with BoundsChecker NDIS allocation tracking.
Return to:
The following notes pertain to DriverStudio.
DriverAgent is not being shipped with this release.
Problems reported when printing from Help topics. The online HTML-help files associated with the DriverStudio products allow you to print help topics. You can choose to print a single topic, or to print all topics under a selected heading. Selecting the second choice (printing all topics under a selected heading) will sometimes result in the display of an error-message dialog. This is a bug in the HTML-help development tools, which should be fixed in a future release. (Note that the topics are still printed correctly, you just have to click your way through one or more annoying error-message dialogs to make them go away.) Printing a single topic proceeds with no errors.
Do not use the InstallShield Wizard Program Maintenance Repair option. Use of the InstallShield Wizard Program Maintenance Repair option is not recommended as the results of the repair may not be satisfactory. We recommend that you completely remove and reinstall the DriverStudio software.
Installation on Windows 95 platforms require updated system files. Install does not work properly on Windows 95 if needed system files are not previously updated. This can be resolved by first installing Windows Sockets 2 and then having VS6.0 installed on the system prior to installing DriverStudio.
Windows XP lockups possible. Use of BoundsChecker for Drivers with certain video cards may cause lockups on Windows XP platforms.
Remote operations considerations:
If you are viewing DriverStudio Settings for a remote target and BoundsChecker and/or TrueTime settings are unavailable because "Access is Denied"(click on BoundsChecker area of TOC and view error message in right pane), make sure that you are logged into the Host PC with a username AND password that are the same as the username AND password for a member of the Administrators group on the Target PC.
To view remote settings on a Win9x target machine, the target must be configured for user-level access control instead of the default share-level access control. This can be changed from the control panel/network applet. Select the access control tab and change it to User-level access control. Specify a Windows NT domain name under 'obtain list of users and groups from'. Anonymous access to remote targets is not supported.
Remote TrueTime configuration does not support selecting user-defined functions to monitor. User-defined function selection must be configured on the target machine.
On Win95 and NT 4 platforms without Internet Explorer Active Desktop, the DriverStudio Remote Namespace cannot be restored using the DriverStudio Configuration dialog after it has been disabled. Re-enabling DriverStudio Remote explorer integration requires running regsvr32 on DSRNamespace.dll.
If you install Host-only on NT 4, Win2K, and/or WinXP platforms and are unable to receive remote debug messages using Driver Monitor or the DriverWorkbench Output Window, make sure that the DriverStudio Remote Control service is started. Set this service to Automatic Start so the problem does not reoccur.
On Windows XP platforms, Internet firewall protection must be disabled in order for DriverStudio remote components to function correctly. To turn off this protection, perform the following steps:
The following notes pertain to SoftICE.
USB keyboard operations:
Certain
USB keyboards do not respond to the USB get_report request properly. (On
popup, SoftICE uses this request to determine if a key state has changed.
This, in turn, allows SoftICE to support typematic on keys which cause
the debugger to pop down, such as F8 and F10 in the default keyboard configuration.)
If you are using one of these keyboards, you will see an error message
from SoftICE immediately after a popup. To work around the problem, you
will need to add the following DWORD registry key on Windows NT/2000/XP,
and set its value to 1:
\HKLM\System\CurrentControlSet\Services\ntice\UsbDisablePopdownTypematic
For Win9x/Me platforms, add the following entry to your WINICE.DAT
file:
USB_DISABLE_POP_TYPEMATIC=ON
This will disable typematic when SoftICE pops down. Typematic will
still work on all keys that do not cause SoftICE to pop down.
When
using a USB keyboard with SoftICE, Windows will display the following
message:
**** CHATTERY KEYBOARD : Keyboard is sending useless reports. Tell
'em to fix it.
This message is caused by the SoftICE keyboard hook code, which prevents
Windows from seeing SoftICE's hotkey. This message is normal when using
a USB keyboard with SoftICE, and can be ignored.
Windows XP extension DLL format not supported. SoftICE does not currently support the new extension DLL format introduced with Windows XP. For now, you must use the old-style DLL extensions with SoftICE.
The following notes pertain to Frameworks.
Multiple DDK and/or Target OS configuration considerations:
Always use “Rebuild All” for your driver project if you switch between different DDKs and/or Target OS configurations within the IDE. The standard “Build” might not find any updates in the dependency list and just skip rebuilding the driver altogether. Or, if different compiler is used, you will encounter a version conflict at the link step. So, always do a complete Rebuild when switching the build environment.
If you switch between different DDKs and/or Target OS configurations within the IDE, you can occasionally run into a link error like:
LINK: fatal error LNK1207: incompatible PDB format in …; delete and rebuild.
This is a linker glitch due to incompatible PDB formats used by the VC 6.0 and XP DDK build environments. To get around this, you have to manually delete the specified .pdb file and rebuild the project.
Shortcuts in the DriverStudio “Development Environments” start folder will not be deleted on uninstall. The folder should be removed manually.
Win9x Builds. DriverNetworks TDI Client libraries and samples for Win9x should be built using the Win2K DDK build environment.
The following notes pertain to DriverWorkbench.
FieldAgent is no longer available as a separate selection on the DriverWorkbench menu. Its functionality has been incorporated into the DriverWorkbench Unified Settings Dialog.
Windows XP extension DLL format not supported. DriverWorkbench does not currently support the new extension DLL format introduced with Windows XP. For now, you must use the old-style DLL extensions with DriverWorkbench.
Return to:
========================================
DriverStudio Release 2.5
What's New in This Release?
Important Notes
Readme Archive
Note: You can verify that you have Release 2.5 installed on your computer by issuing the ver command at the SoftICE command line prompt.
Release 2.5 offers enhancements for the following DriverStudio components:
SoftICE
VToolsD
DriverWorks
DriverNetworks
DriverWorkbench
BoundsChecker
USB Support
Symbol Loader (LOADER32)
Multiple Data Windows
Dynamic Data Windows
User-Definable Popup Menus
Headless Configuration
on Win9x and WinMe
Specialized Network Card
Drivers
Universal Network Driver
(UND)
Note: The SoftICE Universal Network Driver (UND) is only supported on Win2K.
Remote/Distributed Debugging
Note: Remote debugging can now be done at boot time on Win9x systems.
Serial Debugging
Right-clicking Feature
Advanced Tab Feature
New Edit Capabilities
Redesigned Settings Video
Page
New Hotkeys
CTRL+HOME and CTRL+END now take you to the top and bottom of the command window history buffer.
CTRL+ALT, in combination with the number pad's 7 (Home) key, 1 (End) key, 9 (PgUp) key, or 3 (PgDn) key instantly moves the SoftICE display to one of the four corners of the monitor screen, while CTRL+ALT, in combination with the number pad's 5 key moves the SoftICE display to the center of the screen.
Command List:
USB
wd.0
wd.1
wd.2
wd.3
bpZ.t
bpZ.p
bpZ.a
bpZ.v
pci
evres (used with BoundsChecker)
Command Modifiers for
the Breakpoint Commands
Enhanced PCI Command
USB Command
The ‘usb –d’ which dumps the host controller registers.
The ‘usb –s’ command dumps the USB host controller scheduler.
EVRES Command
The PCI Command properly decodes Host to Host bridges. In addition, the list of PCI Vendors has been updated.
User-defined popup menu entries no longer repeat if the Enter key is immediately pressed.
SMP Support for Windows XP now works. The Boot.ini program is no longer needed.
Long filenames are now supported on Win9x. Breakpoints and Break on WinMain were not getting hit.
USB support has been added for Windows XP Build 2462.
The Networking page in Settings is now responding correctly.
Remote Data - Explorer
'.' bug has been addressed
Command Line bug addressed
'Net ComX' bug addressed
INTOBJ
command bug fixed
Proc
-x "procname'
bug fixed
'Thread -x' command bug
fixed
msvxd.mak: Fixed a bug where OUTPATH is included twice in the target name for a library.
ndis.h: Defined typedef __int64 LONGLONG; for C++ builds.
vcomport.h: VCommPort destructor made virtual.
vtoolsd.h: Min/max macro #defined only when not defined yet.
Note: You can use DriverWorks 2.5 to build 64-bit drivers for the Windows XP 64-bit operating system. (For build details, please refer to the following topic in the DriverWorks Help: “Building Drivers with the XP DDK.”)
IEEE 1394 Support. This includes the C++ class framework, DriverWizard enhancements, samples and documentation for development of WDM drivers for IEEE 1394 devices.
Windows XP Beta Support. See the DriverWorks Help topic “Building the Libraries” for more information and detailed procedures.
64-bit Target Support. DriverWorks workspace file (VdwLibs.dsw) now includes “IA64” configurations, which are built against Windows XP DDK (64-bit). Most WDM samples have 64-bit configurations as well. SetDDKGo utility is updated to setup Visual Studio for 64-bit configurations.
NDIS WDM Configurations. These configurations (kndiswdm.dsp) represent DriverWorks class library subset for NDIS WDM Miniports developed using DriverNetworks. NDIS WDM configurations (including the 64-bit configuration) are added into the DriverWorks workspace as well.
Remote Tracing Support with Driver Monitor application (Monitor.exe). Monitor.exe has been enhanced to support tracing from remote targets over TCP/IP. It’s also gotten some new GUI features, such as remote target and channel selection and numerous performance enhancements. Multiple instances of the application are allowed now, too. The remote trace functionality is provided by the new driver, dbgnet.sys, shipped with DriverStudio 2.5.
Monitor.exe Application (Debug Output Viewer). The Debug Output Viewer has been enhanced to support message filtering and highlighting using wildcard and regular expression syntax.
SetDDKGo.exe Utility. The SetDDKGo.exe utility has been enhanced to manage multiple DDK installation, 32-bit vs 64-bit development and automatic shortcut feature for driver development under Microsoft Visual Studio IDE.
DDK build button integrated into Visual Studio. A DDK build button has been added to the Visual C++ IDE to allow drivers to be built with the DDK BUILD.EXE utility.
Chat1394 – WDM sample driver demonstrating point-to-point asynchronous communication between two IEEE1394 nodes.
Simple1394 – A simplified version of the Chat1394 driver demonstrating asynchronous mode communication using IEEE1394 nodes.
Isoch1394 – WDM sample driver demonstrating point-to-point Isochronous communication between two IEEE1394 nodes.
IpFilterHook – NT-style sample demonstrating the Windows 2000 TCP/IP protocol hook technique.
UsbFilt and MouseFilter – Examples updated to use KWdmFilterDevice.
Kbfilter – WDM Keyboard Filter driver added.
KIrb
K1394AsyncClient
K1394IsochTransfer
K1394IsochResource
K1394IsochBandwidth
K1394AddressFifo
K1394FifoElement
KWdmFilterDevice
KMutexFast
KIpFilterHook
KIrp::Irb
KMemory::(new constructors and Initialize() overloads)
KMemory::MapToSystemSpaceSafe (Windows 2000 and higher)
KStreamAdapter::OnSurpriseRemoval (Windows 2000 and higher)
KTrace operator << (for ULONG_PTRs under 64-bit builds)
KKernelSharedFifo::ItemsLeft (Allows the caller know how many items may be placed in the FIFO before it is full)
KDmaTransfer::SequenceTransferDescriptors now works correctly with scatter-gather devices.
NT KbFilter example fixed so that the first keystroke need not be lost if it is loaded at boot time. New readme file added.
KMemory fixed to use IoAllocateMdl instead of MmCreateMdl.
KPnpLowerDevice::KPnpPowerCall ASSERT fixed to check NEXT stack location (being used by the lower device) rather than the current stack location which could be invalid if ForceReuseOfCurrentStackLocationInCalldown was used.
KWmiContext::_DpWmiQueryDataBlock fixed so it will not page fault if pLengthArray is NULL (the default value).
On EzDriverInstaller, menus can now be opened with the keyboard;the 'About' dialog was also updated.
Removed duplicate call to KeInitializeDpc in KTimedCallback::SetPeriodic.
Fixed bug in capstream example so that streaming may be stopped in the graphedit application.
Fixed bug in UsbFilt example that caused it to 'blue screen' on shut down.
Fixed bug in MouseFilter example that caused it to hang at boot time.
Fixed a potential memory leak in the C++ run-time (AtExit), which could happen when a driver ran under the Verifier with error injection on Windows 2000 and XP. Method InitializeCppRunTime(void) now returns NTSTATUS.
Note: You can use DriverNetworks 2.5 to build 64-bit drivers for the Windows XP 64-bit operating system. (For build details, please refer to the DriverNetworks Help topic, “Building Drivers with the XP DDK.")
NDIS 5 Protocol Driver Support. This includes the C++ class framework, Network Driver Wizard enhancements, samples and documentation for development of NDIS protocol and PNP transport drivers for Windows 2000.
NDIS 5 Intermediate Driver Support. In addition to NDIS Filter driver framework shipped with the previous release this release adds support for generic NDIS IM drivers (“muxes”). The support includes the Notify Object DLL framework.
The all-new Network Driver Wizard. This supercedes the Quick Miniport Wizard from the previous release. The new Network Driver Wizard can now generate 'skeleton' driver projects for NDIS protocol and intermediate drivers as well as miniport drivers. The wizard features a new navigation pane with a multi-step GUI displaying a number of new network driver features. Comes integrated with Microsoft Visual Studio IDE and a really cool Help System!
DriverSockets (Kernel Mode Sockets) Enhancements. This includes support for TDI PNP Clients, multicast, IP configuration access and other new utility classes and methods for TDI clients for Windows 98/ME/NT/2000.
64-bit Target Support. DriverNetworks workspace file (KNdisLib.dsw) now includes 64-bit configurations (kndis64.dsp and tdi64.dsp), which are built against the 64-bit Windows XP DDK. (See Note above.) The 64-bit configurations have been added to the NDIS Miniport and TDI client samples.
Standard Template Library (STL) Support. The STL library shipped with DriverWorks can now be used with NDIS miniport and intermediate drivers written with DriverNetworks.
I1394p2p – NDIS 5.0 WDM Miniport implementing LAN emulation mode between two IEEE1394 nodes. Uses the new IEEE1394 DriverWorks class framework.
NmPacket – NDIS Protocol Driver Sample. DriverNetworks implementation of DDK’s “packet” sample plus PNP event handling and more.
ImDelay – NDIS 5.0 Filter Driver Sample. DriverNetworks implementation of the DDK’s “passthru” sample plus packet queuing techniques and more.
NmInt – NDIS 5.0 Generic Intermediate Driver Sample. Demonstrates the techniques of supporting n-to-m (“mux”) configurations. Includes notify object DLL support and more.
Ping – WDM TDI Client demonstrating the use of KRawSocket class. Implements ICMP echo send and receive using kernel mode “raw” sockets. Plus access to the kernel mode IP configuration, and more (W98/ME/Windows 2000).
UsbWebServer – Updated kernel mode TCP server example. Now includes support for TDI PNP clients.
KIrpParams
KListEntry
KNdisBufferHeap
KNdisDebugTrace
KNdisFilterPacketPool
KNdisHeapFast
KNdisPacketListWithContext
KNdisPacketWithContext
KNdisPendingOid
KNdisProtocol
KNdisRefCounter
KNdisRequestWithContext
KNdisTrace
KTA_ADDRESS
KTransportEventNotification
KTransportIrpDispatch
KTransportPnpAddress
KTransportPnpObject
KTransportProvider
KTransportTraits
KEnumIpInterface
KRoutingTable
KTdiPnpClient
KTdiPnpStates
KListBrowser Lookup() and Remove() methods are made static.
KNdisAdapterTraits::OidQueryCanPend() and OidSetCanPend(). These traits control whether or not the framework caches OID parameters when processing OID requests. Used for asynchronous OID processing. The default behavior for NDIS WDM miniport returns true.
KNdisFilterBinding::OnPnpRemoveDevice() has been renamed as KNdisFilterBinding::OnPnpQueryRemoveDevice ().
KNdisMiniAdapter::GetPendingOid() returns a reference to the pending OID request cached by the base class. Used for asynchronous processing (when Query or Set return NDIS_STATUS_PENDING).
KNdisPacket::LockBuffers(). The method walks the list of packet’s chained buffer resulting in locking the buffers. Sometimes it is necessary to do this before using some non-safe NDIS API (copy packets), which could bugcheck when run under the Verifier.
KNdisPacketPool’s Free() methods are made static for NDIS 5 builds. For NDIS 4 builds, the checked version still uses the instance method Free() to maintain the usage counter. NDIS 5 has the counter built into the pool object, so it is not necessary.
KNdisProtocolTraits::CacheFriendlyAdapterName(). This trait control whether the framework caches bound adapter names. The default behavior is true.
KNdisString class has been reworked. It now uses KNdisStringConst as the base and has gotten a number of new methods and operators. See DriverNetworks Help for details.
Fixed the case of not handling asynchronous OID returns while OID processing (NDIS miniports). KNdisMiniAdapter now caches the OID parameters, which can be accessed by the derived class for asynchronous processing.
Fixed the problem with HCT 6.5 NDIS Tester Script 1c_ginfo not passing OID_PNP_CAPABILITIES query with NDIS 5.0 Miniports.
Fixed bug on W95/98 systems where _purecall() is not defined resulting in the NDIS miniport driver not being able to load.
BEGIN_OID_QUERY_MAP/ BEGIN_OID_SET_MAP macro fixed to allow for asynchronous OID returns.
Fixed a number of bugs in KNdisFilter framework.
Removed a number of obsolete header files accidentally shipped with the previous release.
Fixed a problem that caused occasional non-ASCII symbols in the wizard-generated code.
Distributed Analysis – DriverWorkbench has been redesigned to provide support for remote analysis in a distributed environment using TCP/IP. The DriverWorkbench interface now includes a target selector that can be used to set the target for all Workbench operations to a remote machine on the network. The target selector is enabled through the View menu in DriverWorkbench. The target selector provides a browse button that allows selection of any machine on the network running the DriverStudio Remote Data Service. Once a machine is selected and OK is pressed, the selected machine will appear in the currently-selected target edit box. All operations in DriverWorkbench are applied to the currently-selected target. This includes all File Opens, BoundsChecker, and TrueTime commands.
BoundsChecker and TrueTime Settings – BoundsChecker and TrueTime settings have been moved to the Unified Settings dialog. This dialog, described below, is available from the Tools/Settings menu in DriverWorkbench.
Unified Configuration Dialog – The new configuration dialog controls settings for all DriverStudio configurable components including SoftICE. It is accessible from the DriverStudio and SoftICE program menus. It is also accessible from within DriverWorkbench under Tools/Settings. The configuration dialog can be used to modify settings on both local and remote machines. This functionality is also available from the command line using the –target MachineName command line switch. The Remote Access/Security page has been added to the configuration dialog. This allows the user to control security settings on a target machine. These settings include the ability to deny all remote connections to a target machine as well as to deny remote reboot access for a target machine. Help is now available for all dialog settings.
Output Window – The output window has been enhanced with remote debug message support. This allows debug trace messages from remote machines to be displayed in the output window. By default, the source for the trace messages will include the currently-selected target. Right-clicking in the output window, then choosing settings from the context menu, pops up a settings dialog for configuring additional debug message sources.
Source and Symbol Files – The source and symbol files are always assumed to be on the local machine (the machine running DriverWorkbench), not the current target machine. The source and symbol file paths specify directories on the local machine that contain the symbol files and source when viewing local or remote Crash Dump files, BoundsChecker data, or TrueTime data.
DriverStudio Namespace Extension – The DriverStudio namespace extension is used to provide browsing and file access to remote machines running the DriverStudio Remote Data service. DriverWorkbench uses the namespace to provide File/Open functionality on remote machines as well as to browse the list of available machines in both the target selector browse and debug message output window settings dialogs.
DriverWorkbench now supports Windows XP Beta 2.
The NDISKD extension DLL is now supported. NDISKD needs addresses for certain symbols, however, it passes the symbol names in a format that was not previously supported by the DriverWorkbench symbol engine.
DriverWorkbench now searches subdirectories for paths specified in the Symbol Search Path under View-Options.
Fixed "walking" the Object List on Windows XP machines.
The Explain item on the Event Window context menu now functions correctly.
Thread Walking Reworked – Thread walking was reworked in BoundsChecker to prevent occasional "blue screens" or invalid data reporting when used with Windows XP.
Additional Windows XP Support – Additional BoundsChecker support for Windows XP has been added, including the logging of DebugPrints.
If the pointer to an API was not present, BoundsChecker would incorrectly report an error. Most common if the size of the allocation was >= PAGE_SIZE.
On some Windows 2000 or Windows NT 4 machines, BoundsChecker was unable to find the head of the module list. This would prohibit BoundsChecker from hooking any boot drivers. Problem also exhibited itself in DriverWorkbench when a Capture System Information was performed. There would be no events and the Driver List would be empty.
A problem was fixed where calls to ExAllocatePoolWithTag could interfere with BoundsChecker NDIS allocation tracking.
Problems Printing from Help
========================================
Release 2.0.1
IMPORTANT: If you use SoftICE on machines with power management enabled, you must manually configure SoftICE to support Standby/Resume. See details in the SoftICE README file.
CONTENTS
What's New in This Release?
Important Notes
What's New in This Release?
NOTE: You can verify that you have Release 2.0.1 installed on your computer by issuing the ver command at the command line prompt.
Release 2.0.1 offers enhancements and bug fixes for the following DriverStudio components:
SoftICE
BoundsChecker
DriverWorkbench
DriverWorks
DriverNetworks
SoftICE
Enhancements
Whistler Build 2296 support for SoftICE.
Pentium 4 (Willamette) support for SoftICE.
Add new Windows 2000 (Win2K) bugcheck strings and new driver verifier bugchecks.
With Driver Studio 2.0, your debugging ability ended at about the time the screen left high res mode. Now, you can debug to shutdown time on Win2K computers.
Added additional logging information to aid support:
Registration
Operating System
Version Number
Copyright data
Modified WX command to handle new formats for Pentium 4 processors.
Bug Fixes
Now has support for ID's > 0x400. (Specifically thread, process, object, etc.)
Fixed Packet Command.
Packet command would always fail after being given an invalid packet address.
Fixed the bug causing crashes when gina.dll's were used.
Local contexts would exceed what was expected.
SoftICE would occasionally remain partially visible after returning back to the OS.
KD Extensions were incorrectly handling context changes.
When changing contexts, we were actually setting instead of getting.
KD Extensions now accept commands with parameters.
Fixed a BSOD crashing bug when running with poolmon on.
BoundsChecker
Bug Fixes
Fixed crashes relating to the logging of debug prints. (These crashes only occurred on Win9x machines.)
DriverWorkbench
Bug Fixes
Fixed a hang in DriverWorkbench that would occur while a dump file was being loaded.
Fixed a stack trace bug that caused stack traces to either be incorrect or missing functions in many cases.
Fixed general problems where the Kernel Debugger commands did not work correctly in the DriverWorkbench command window.
Fixed a KD Extension bug that caused KD Extensions (i.e., kdextx86.process and kdextx86.thread) to not work properly on Win2K platforms.
Added Cut/Copy/Paste to/from clipboard to the Command Window.
DriverWorks
Bug Fixes
Fixed DBGMSG.SYS crash bug for Whistler Build 2296.
Fixed crashes on unload in UsbFlt sample.
Fixed a Write request return status bug in UsbIsoch sample.
Fixed a DriverWorks Wizard intermittent hang bug.
Fixed bugs in KPnpLowerDevice::PnpPowerCall and KPnpLowerDevice::SynchronousCalldown.
Fixed a bug in KIrp::CopyParametersDown.
DriverNetworks
Miscellaneous bug fixes in NDIS Filter class framework (KNdisFilterAdapter, etc.).
Fixed memory leak bug in DriverSockets.
Fixed memory leak bugs in UsbWebServer Sample.
Removed TRACE statements from wizard-generated NDIS Filter driver.
Made additions and corrections to DriverNetworks Help.
The following notes pertain to DriverStudio.
On WDM capable Windows 9x platforms (Windows 98 or later), the Debug Monitor application can use either the VxD ndbgmsg.vxd or the kernel mode driver dbgmsg.sys to hook and collect DBGPRINT output. By default, on 9x platforms, DriverStudio is set to use the VxD; the kernel mode driver is disabled. This has been done on account of problems with power management caused by the kernel mode driver. However, you may want to use the kernel mode driver to get debug messaging capability earlier than is available using the VxD -- for instance, to debug static VxDs. To do this, simply use the dbgmsg.reg file located in the tools/monitor directory. This will simply change the value of the start key for the kernel mode driver service entry from 4 (disabled) to 2(system start). As a result, the VxD will not be loaded. You can switch back by changing the start key value back to 4.
Disabling dispatch function patching in TrueTime:
A registry key has been added that allows
you to control TrueTime's automatic patching of a driver's dispatch, ISR,
and DPC functions. The key is:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\x9tt\Parameters
and the item of interest is:
HookStandardDrivers
= 1
Set the item to 1 to enable patching; set it to 0 to disable patching. (The item is of type REG_DWORD.) Note that you must reboot for the change to take effect. This feature was added to deal with instances in which the time consumed by dispatch functions overshadow the times in those other driver functions for which you are trying to collect data.
Profiling DriverWorks and DriverNetworks drivers with TrueTime:
The default settings for a free build of a DriverWorks/DriverNetworks project must be changed before profiling it with TrueTime. The following changes need to be made to the project:
In C++ settings, set Debug Info from None to Program database
In link settings, change debug info from COFF to both
In link settings edit box, change "/debug:notmapped,MINIMAL" to "/debug:notmapped,FULL"
It is not recommended that you attempt to profile a checked build of a DriverWorks project, especially if you select a lot of functions for patching. This is because a checked build of a DriverWorks driver has many more functions than a free build. Selecting a lot of drivers can overload TrueTime's logging code and generate too much overhead.
Profiling Interrupt Service Routines with TrueTime:
TrueTime uses a driver thread that runs at passive level to write its data to disk. On a driver that interrupts frequently, logging a lot of functions a DIRQL level will fill up the buffers and leave insufficient time for this thread to write the data. For this reason, exercise caution when selecting functions that run at DIRQL for patching. The top level ISR function is automatically profiled. In our test, logging this function did not cause any problems.
TrueTime on Windows 9x:
Data collection on Windows 95/98/ME is not supported. TrueTime data files can be viewed by Driver WorkBench running on Windows 9x. Although the TrueTime menu entries are grayed out, you can use File | Open to open a .TTD file for analysis.
Windows 2000 has a recovery console that
WINNT32.EXE /cmdcons
In the unlikely event that the TrueTime driver causes problems at boot time, it can be disabled from the recovery console using the following command: DISABLE X9TT
On a standard driver, TrueTime groups those events that are associated with the same IRP. This will produce a display of all the events associated with the IRP from the time of the calling of the driver's dispatch function to the completion of the IRP. However, TrueTime cannot always associate an IRP with a DPC. TrueTime will attempt to locate the associated IRP by scanning the context parameters of the DPC in question. (For example, in the case of the I/O manager-supplied DpcForIsr, TrueTime can identify the IRP.) If you are using a custom DPC, in order for the DPC to be associated with an IRP (by TrueTime), you should code the IRP into one of the context parameters.
PROBLEMS PRINTING FROM HELP. The online HTML-help files associated with the DriverStudio products allow you to print help topics. You can choose to print a single topic, or to print all topics under a selected heading. Selecting the second choice (printing all topics under a selected heading) will sometimes result in the display of an error-message dialog. This is a bug in the HTML-help development tools, which should be fixed in a future release. (Note that the topics are still printed correctly, you just have to click your way through one or more annoying error-message dialogs to make them go away.) Printing a single topic proceeds with no errors.
Copyright 2001 Compuware Corporation
1/01
========================================
Release 2.0
IMPORTANT NOTE:
If you use SoftICE on machines with power management enabled, you must manually configure SoftICE to support Standby/Resume. See details in the SoftICE README file.
CONTENTS
What's New in This Release?
Important Notes
What's New in This Release?
DriverNetworks™ is a suite for Windows network driver developers. In its core, DriverNetworks™ is a C++ class library that captures the NDIS object model into a set of compact classes and provides a framework for writing NDIS kernel mode drivers – quickly, efficiently - and - in object-oriented manner. DriverNetworks™ also comes with a simple “wizard” application that generates driver project for Microsoft Visual C++.
DriverNetworks™ includes the following components:
A C++ class library for NDIS drivers
A C++ class library for TDI clients
The Quick Miniport Wizard Application
Online Help
Samples
TrueTime Driver Edition is a performance analysis tool that allows Windows NT device driver writers to identify and fix a driver's performance bottlenecks.
The View menu of DriverWorkbench
now includes two new selections:
- Fit Columns to Data
- Fit Columns to Window
These selections are available whenever you are viewing a screen that
includes columns of data. Choosing "Fit Columns to Data" will
adjust the width of columns so that the data is displayed with no loss
of digits on the right. (Consequently, column widths will not change even
when the window is resized.) Choosing "Fit Columns to Window"
will adjust column widths to fit to the width of the window. (Consequently,
column widths will change as the window is resized.)
The DriverWorkbench command window has been changed to more closely emulate WinDbg. For this reason, the following have been removed from the command window:
The following commands are supported by the new command window:
DriverStudio supports installing SoftICE and BoundsChecker for drivers on an Embedded NT test machine. After using the Component manager to add in the DriverStudio.kdf you can then configure BoundsChecker and NTICE. Go to 'DriverStudio Easy Installations' . From there you can choose to add support for BoundsChecker and/or SoftICE. If you are debugging on a headless system, you can choose this option. However, you will need a serial cable and your development machine must have sinet.exe installed. To change the configuration of SoftICE/BoundsChecker, right click on the component you need to configure and select the 'properties' item.
DriverWorks supports development of drivers that use the Standard Template Library (STL), which is part of the C++ standard. See the DriverWorks ReadMe HTML file for more information.
There have been numerous enhancements to SoftICE, including support for Millennium, new commands, additional remote debugging support, and more. See the SoftICE readme file for more details.
Important Notes
The default settings for a free build of a DriverWorks project must be changed before profiling it with TrueTime. The following changes need to be made to the project:
It is not recommended that you attempt to profile a checked build of a DriverWorks project, especially if you select a lot of functions for patching. This is because a checked build of a DriverWorks driver has many more functions than a free build. Selecting a lot of drivers can overload TrueTime's logging code and generate too much overhead.
TrueTime uses a driver thread that runs at passive level to write its data to disk. On a driver that interrupts frequently, logging a lot of functions a DIRQL level will fill up the buffers and leave insufficient time for this thread to write the data. For this reason, exercise caution when selecting functions that run at DIRQL for patching. The top level ISR function is automatically profiled. In our test, logging this function did not cause any problems.
Data collection on Windows 95/98/Me is not supported. TrueTime data files can be viewed by Driver WorkBench running on Windows 9x. Although the TrueTime menu entries are greyed out, ou can use File | Open to open a .TTD file for analysis.
In the unlikely event that the TrueTime driver causes problems at boot time, it can be disabled from the recovery console using the following command: DISABLE X9TT
Copyright 2000 Compuware Corp.
5/00
========================================
Return to:
Copyright 2002 Compuware Corporation