Version 3.2

New Features

DriverWizard 

A single DriverWizard consolidating the previous DriverWorks Wizard and Network Driver Wizard. This new DriverWizard generates C and DriverWorks/DriverNetworks C++ driver source code. 

New AutoMerge option. It now has a "User-supplied Diff" option to allow you to use your favorite diffing program in place of the default. This allows you to use a familiar diffing tool to fine tune any wizard changes. 

VisualStudio .NET 2002/2003 and 2005 RC support 

There is a new option available. Suppress all dependency warning dialogs disables any dependency checking dialogs to facilitate batch or script build processes. 

DriverStudio now has VisualStudio automation model support. This support can be accessed by DTE.Properties("DSDDKEnv", "General"). With this automation support, you can change DSDDKEnv properties and incorporate VisualStudio macro functionality to utilize automated build processes for your project. Here is a Visual Studio .NET macro sample to enumerate all DSDDKEnv properties. 

Imports EnvDTE

Imports System.Diagnostics

Imports Microsoft.VisualStudio.VCProjectEngine

Imports System

Imports System.IO


Sub ShowDSDDKEnvProperties()

Dim Props As Properties

Dim PropObj As [Property]

Dim NameValPair As String

Props = DTE.Properties("DSDDKEnv", "General")


For Each PropObj In Props

NameValPair = NameValPair & (PropObj.Name & "Value = " & PropObj.Value & Microsoft.VisualBasic.ControlChars.CrLf)

Next

MsgBox(NameValPair)

End Sub

The Translate Symbol and Load Symbols into SoftICE buttons in VisualStudio .NET now support a DDK-built binary. If the output filename specified in .vcproj does not exist, or differs from the DDK build utility output directory, it will search for the binary with a convention of objType_Version_Cpu/Cpu. 

LDK support 
As of the Windows Longhorn Driver Kit (LDK), a new preprocessor definition needs to be specified in the VisualStudio project in order to build with the LDK. Each of these definitions is tied to the minimum support of the compiled driver. Here are the variables that the VisualStudio package predefines according to the target OS selected in the DDK Build Setting: 

  Windows 2000 Windows XP Windows 2003 Windows Longhorn 
$(_WIN32_WINNT) 0x0500 0x0501 0x0502 0x0600 
$(WINVER) 0x0500 0x0501 0x0502 0x0600 
$(_WIN32_IE) 0x0501 0x0603 0x0603 0x0605 
$(NTDDI_VERSION) 0x05000000 0x05010000 0x05020000 0x06000000 

New Batch File to Build All Framework Libraries 

DriverWorks and DriverNetworks now have DriverWorks\BuildAllDW.bat and DriverNetworks\BuildAllDNW.bat batch files to build all libraries with a specified BASEDIR, target, and platform. 

x64 Platform Support 

Added x64 support for EzDriverInstaller, DriverMonitor, and WdmSniffer. 

DriverMonitor 

Added Enable/Disable All Channels option to temporarily enable or disable logging from local and network channels. 

New Classes and Methods 

Added KDriverManagedQueueCsq to replace KDriverManagedQueueEx for WHQL compliance with new drivers. 



Bug Fixes
Thank you to the many customers who reported issues!

KVirtualCom class calls I.PnpComplete instead of I.Complete in IOCTL Complete routine. 
Updated STL support to STLport 4.6.2. 
Fixed KsMiniDriver::DriverUnload code section and miscellaneous AVstream class bugs. 
Updated .dsp/.vcproj/sources, Src2Vcproj, and DriverWizard to support LDK. 
Updated WDM examples to use KIoWorkItem/KDriverManagedQueueCsq instead of deprecated KWorkItem/KDriverManagedQueueEx. 
Fixed adding KeInitializeSpinLock to the KVirtualCom constructors. 
Fixed KRegistryKey::Reconstruct does not check parameter for NULL value. 
Fixed KTrace operator << (KIrp I) should display minor fields of IRP_MJ_SYSTEM_CONTROL. 
Fixed KStdWmiInterface::DispatchSystemControl asserts with IRP_MJ_SYSTEM_CONTROL and minor function == 0xFF. 
Fixed Xilinx sample driver build error. 
Src2Vcproj (sources to project converter)
Support ASM_DEFINES and .asm files. 
Add correct headers to the project files. 
Add command line batch capability to SrcToVcproj. 
WDMSniffer
Added filesystem support to WDMSniffer. 
Fix crashes when WdmSniffer filters a kernel streaming driver with Ioctl METHOD_NEITHER handling. 
DriverMonitor
Fixed a bug occurring when the system returned TDI_NO_RESOURCES


Version 3.1

New Features
New C DriverWizard that generates Windows driver source code in the C programming language. 

A new wizard that generates source code, project files, and installation files to jump start driver development.  After running the wizard, you just have to build the resulting code to have a functional driver that installs.  The code is customized the way you want it for your hardware.  The source code is in the c programming language, is consistent with Windows Driver Development Kit procedural designs and style, and is not dependent on a library.  There are a wealth of features in the new wizard.  The wizard will generate numerous driver types.  The wizard allows selection of existing hardware devices on the local computer.  The wizard can reload a previously generated driver project and update the source code.  The wizard has an open, extensible architecture so you can adjust the source code or customize it to your organizations standards. The new wizard generates code that requires the Windows XP SP1 or later Driver Development Kit (DDK). Drivers can be developed for Windows 2000, Windows XP, and Windows Server 2003. 

Virtual Serial Driver Support 

This includes a new C++ class and new sample showing how to develop this type of driver. 

Visual Studio .NET 2003 Driver Development 

The DriverStudio add-in for Visual Studio .NET enables building drivers using the Windows DDK compiler and linker. You can use the standard Visual Studio build commands using a .vcproj file or use the Build with BUILD.EXE command to invoke the DDK BUILD utility with a sources file from within Visual Studio. 

You can change DDK build environment options on the fly in Visual Studio .NET using the DDK Build Settings dialog. This allows changing the path to the DDK and the target operating system for a build without leaving Visual Studio .NET.  You can enable the PREfast tool for your driver builds. You can also change the parameters passed to the DDK Build utility when the Build with BUILD.EXE command is executed. 

You can launch driver wizards from within Visual Studio .NET to begin a new device driver project. The wizards generate Visual Studio .NET project and solution files. 

You can convert existing Visual Studio 6 driver projects (.dsp) and DDK driver projects (sources) into Visual Studio .NET "solutions" files using the updated SrcToDsp utility and take advantage of the rich Visual Studio .NET IDE to design and maintain your driver project. 

AMD64 platform is now fully supported in the IDE.  Drivers can be built for the AMD64 using Visual Studio. 

You can now translate and load .nms symbol files into SoftICE using the DriverStudio menu and toolbar. 

Src2Dsp (sources to project converter) Utility has New Enhancements 

New UI allows viewing and editing the sources file with syntax coloring. 

Supports dirs files and additional target types such as applications, dlls, and libraries. 

Supports batch building the sources file with installed DDK build environments. 

Allows creating a new sources file via a wizard. 

New classes and methods 

KVirtualCom class encapsulates virtual com port support. 

New and updated samples 

VCom1394 sample demonstrates virtual serial driver over 1394 bus. 

VHidMini sample demonstrates virtual HID minidriver. 

Firefly sample demonstrates a WDM filter driver that uses WMI. 

TailLight sample demonstrates a WDM filter driver for USB mouse. 

Bug Fixes
Thank you to the many customers who reported issues!

Fixed Windows XP sp1 DDK compiler and linker issues. 
Fixed TerminateCppRunTime code. 
Fixed miscellaneous documentation bugs. 
Fixed KFilterDispatch(CreateMailSlot) declaration. 
Fixed sources files for examples to build with latest DDK. 
Fixed STL compilation bugs with latest DDK. 
Fixed 1394 isonchronous buffer management bugs. 
Fixed KEvent named events for latest DDK. 
DriverWizard
Fixed incorrect variable name in generated code for memory ranges. 
Changed KTrace to KDebugOnlyTrace in code generation to optimize free builds. 
Fixed generated sources files to build with latest DDK. 
Fixed 1394 bus reset handling code. 
Fixed missing 1394 isochronous code C++ files from sources file. 
Fixed AVstream code to declare filter descriptors as static. 
Fixed problems when changing the driver class name and filename. 
Fixed WDM Filter install dll missing sources file. 
Visual Studio 6 package
Fixed logic which detected when to switch the DDK compiler and linker for the Visual C++ compiler and linker. The package previously looked for a sources and makefile in the project directory. Now the package uses project settings to determine when to switch the compiler and linker. DDK include path environment variables, DriverWorks library dependency, and DriverEntry main entry point are the new heuristics. 
Fixed compiler redirection for dependency projects. 
Fixed compiler redirection to work for AMD64 builds. 
Fixed DDK build button to work for AMD64 builds. 
Src2Dsp (sources to project converter)
Fixed support for build utility macros. 
Fixed compiler and linker options generated during conversion. 

Version 3.0

New Features
USB 2.0 Support

This includes updated samples, a new class, and modifications to the library to support USB 2.0.

AVStream Support

This includes a new C++ framework, new samples, and wizard support for AVStream minidrivers.

PLX 9056 Chip Set Support

This includes a new C++ class and samples showing how to develop this type of driver.

Multifunction WDM Device Support

This includes new classes and samples showing how to develop this type of driver.

IEEE 1394 Support

This includes new and updated samples and improved C++ classes.

Kernel Mode drivers can now be built under Microsoft Visual Studio .NET IDE

The DriverStudio add-in for Visual Studio .NET enables building drivers using the Windows DDK compiler and linker. You can use the standard Visual Studio build commands using a .vcproj file or use the Build with BUILD.EXE command to invoke the DDK BUILD utility from within Visual Studio.

You can change DDK build environment options on the fly in Visual Studio .NET using the DDK Build Settings dialog. This allows changing the path to the DDK and the target operating system for a build without leaving Visual Studio .NET.

You can launch the Driver Wizard from within Visual Studio .NET to begin a new device driver project. The Driver Wizard generates Visual Studio .NET project and solution files.

You can convert existing Visual Studio 6 driver projects (.dsp) and DDK driver projects (sources) into Visual Studio .NET "solutions" files using the updated SrcToDsp utility and take advantage of the rich Visual Studio .NET IDE to design and maintain your driver project.

EzDriverInstaller has New Enhancements

The status of installed devices is displayed.

New options to enable and disable installed devices.

C++ Exception Handling Support for IA64

New classes and methods.

KCancelSafeQueue class encapsulates Windows cancel-safe IRP queues.

K1394GenerationCount wraps 1394 bus reset generation counter.

KBus and KPhysicalDevice classes support bus drivers and multifunction devices.

KPlx9056 abstracts the PLX9056 PCI hardware.

KUsbBusInterface provides direct client access to the USB bus interface.

AVStream Framework classes for developing AVStream multimedia minidrivers.

KsMiniDriver

KsDevice

KsPin

KsFilter

KsObject

KsDmaAdapter

KsDeviceDescriptor

KsDeviceDispatch

KsDesignRules

KsPinDescriptor

KsPinDispatch

KsFilterDescriptor

KsFilterDispatch

KsStreamPointerBase

KsStreamPointer

KsStreamLeadingPointer

KsStreamTrailingPointer

New and updated samples.

Plx9056 sample demonstrates how to program PLX9056-based PCI hardware.

HwCap sample demonstrates a pin-centric AVStream video capture driver.

VCap sample demonstrates a filter-centric AVStream video capture driver.

Cam1394 sample demonstrates a pin-centric AVStream and kernel streaming 1394 video camera driver.

MultFunc sample demonstrates multifunctional device drivers, including bus driver, function driver, class installer dll, and configuration utility.

Vscsi sample demonstrates a virtual scsi port driver.

VDev1394 sample demonstrates a 1394 virtual device.

EzUsb sample has been updated to support USB 2.0 using the Cypress EZ-USB FX2 Development Board.

UsbTherm sample has been updated to support USB selective suspend.

Bug Fixes
Thank you to the many customers who reported issues!

Fixed Windows XP sp1 DDK compiler and linker issues. 
Fixed Windows Server 2003 DDK (Build 3790) compiler and linker issues. 
Fixed Standard Template Library (STL) headers compiler issues with C++ typename keyword. 
Fixed KPnpDevice::GetDeviceCapabilities method. 
Fixed KMemory::MapToSystemSpace to work on all supported platforms. 
Fixed KDmaAdapter class. 
Modified Read/WriteConfig for KPciConfiguration class to read/write data at DISPATCH_LEVEL. 
Fixed KWdmFilterDevice Pnp policy to delete device object on remove. 
Fixed KUsbLowerDevice::GetStringDescriptor. Usb bus driver expects string descriptor to be from NonPagedPool. 
Fixed KUsbInterface::SelectAlternate crash due to incorrect list manipulation. 
Fixed KStreamAdapter::ReceivePacket incorrect #ifdef which caused SRB_SURPRISE_REMOVAL to not be handled for Win9x. 
Fixed KSystemThread::Start which leaked the system thread object by not immediately closing its handle to it. 
Fixed KDevice::~KDevice crash for certain types of drivers due to calling IoDeleteDevice before calling destructors for objects in the device extension. 
Introduced KDeviceBase class to insure correct order of calling IoDeleteDevice after calling destructors. 
Fixed K1394Configuration::VendorName() and K1394Configuration::ModelName() only return the first letter instead of the full string. 
Fixed improper assignment operator return type for KIoRegisterSafe and KMemoryRegisterSafe classes Fixed miscellaneous documentation errors. 
Fixed crash in the UsbTherm sample. There was a race condition in the DeviceControl handler which could cause a crash. The race condition was between marking the Irp pending and completing the Irp. 
Fixed AMCC sample to pass correct device object to KDmaAdapter::Initialize. 
Fixed 1394 samples to use 1394 bus reset notification instead of plug and play notification. 
DriverWizard
Fixed message logging for IA64 Free configurations. 
Fixed default code generation to match default UI options. 
Fixed code generation to create unnamed device objects to comply with security recommendations. 
Fixed code generation to pass correct device object to KDmaAdapter::Initialize. 
Fixed generation of sources file for NT4 kernel mode driver with no logical devices. 
Removed PnpMinorFunction code since it was added to KTrace class. 
Fixed TDI Client project configuration names. 
Fixed 1394 OnBusReset to use 1394 bus reset notification instead of plug and play notification. 
Fixed Alt-F4 bug. 
Fixed F1 help. 
Fixed build errors using the sources file for WDM filters. 
Visual Studio 6 package
Fixed logic which detected when to switch the DDK compiler and linker for the Visual C++ compiler and linker. The package previously looked for a sources and makefile in the project directory. Now the package uses project settings to determine when to switch the compiler and linker. DDK include path environment variables, DriverWorks library dependency, and DriverEntry main entry point are the new heuristics. 
Fixed bug where non-DDK projects were built with DDK compiler and linker. 
Fixed batch build which would use DDK compiler and linker for non-DDK projects. 
Fixed Windows Server 2003 DDK (Build 3790) compiler and linker issues. 
Fixed F1 help on DDK Build Settings dialog. 
Fixed DDK Build Settings dialog window problems when Help and Browse windows displayed. 
Fixed DDK Build Settings dialog which inaccurate selected compiler option displayed for Windows 2000 DDK that does not have a compiler. 
Symbolic Link Viewer
Added refresh button to keep symbolic links in sync. 
Fixed "About" option from menu not working. 
EzDriverInstaller
Fixed to now prompt for reboot when required to restart device. 
Fixed F1 help and menu help. 
Sources to .dsp Converter
Fixed incorrect .rc filename when converting sources file to .dsp or .vcproj file. 
Fixed .vcproj and .sln output files. 
DDK Build Settings (SetDDKGo)
Fixed window problems when Help and Browse windows displayed. 
Fixed default Target OS radio button to be correct for DDKs. 
Fixed Alt-F4 bug. 
Fixed checked environment for command line against 2K DDK. 
DriverMonitor
Fixed dbgmsg9x.sys crash with string > 512 chars. String now truncated at 512 chars. 

Version 2.7

New Features
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 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 a 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 the 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.

Bug Fixes
Fixed the package (DEV6DRVR.pkg) bug when Visual Studio IDE would fail to load under NT4 due to an unresolved external.

Fixed bug in the RamDisk example where large disks with over 0xFFFF sectors were not supported.

Fixed bug where KDevice::~KDevice accessed the device object after deleting it.

KInterruptSafeFifo::IsValid() is now exposed.

Fixed bug in Simple1394 and wizard-generated 1394 drivers where the generation count IRB was not initialized in OnBusReset().

QUERY_REMOVE_DEVICE is now handled properly in the WDM framework.

Fixed flags usage in KPnpDevice::Power().

KUsbPipe::BuildInterruptTransfer() changed signature to allow to define the type of the endpoint.

Fixed a crash in the wizard-generated ISA driver when the user fails to fill in the TODO sections.

Fixed the C++ library core to allow for standalone (non-framework) configurations and NT4 style 64-bit drivers.

DriverMonitor now refreshes the list of available machines in the All Channels dialog every time the dialog starts.

Pressing F1 now brings up the correct help on SetDDKGo, SrcToDsp, and EZDriverInstaller.

DriverWorks \ndis directory is moved to under Examples\Deprecated. DriverNetworks protocol framework and NmPacket sample supersede this functionality.

Fixed bug in KUstring::AppendHex() not reserving enough space for conversion.

Fixed bug in KFilterDevice::Attach() using IoAttachDeviceByPointer.

Fixed bug in K1394Configuration::Initialize() not initializing vendor and model members correctly.

Fixed bug in KDevice class not deinitializing m_DeviceName and m_SymbolicLinkName on certain code paths.

Added new FLAG m_DeletePdoOnRemove to KPnpDevice's GENERAL_POLICY structure. This is to support devices such as HID miniports, which must not delete PDO on IRP_MN_REMOVE_DEVICE. Deleting the PDO is the default behavior.

Fixed HIDMouse sample to clear the new FLAG m_DeletePdoOnRemove to avoid deleting the mouse PDO in the base class (KHidDevice).

Fixed bug in KRegistryKey::EnumerateSubkey with keys longer than 100.

Fixed the bug when SetDDKgo fails to start while DriverWorks/DriverNetworks libraries are in use.

Fixed a number of SetDDKgo button control problems at Win9X.



Version 2.6

New Features
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.

 
 

Bug Fixes
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.


Version 2.5

New Features
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. The library and samples build with Windows XP Build 2462 and with the Windows XP Build 2462 DDK.

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. Its 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.

 

New Sample Drivers
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. 

 

New Classes
KIrb

K1394AsyncClient

K1394IsochTransfer

K1394IsochResource

K1394IsochBandwidth

K1394AddressFifo

K1394FifoElement

KWdmFilterDevice

KMutexFast

KIpFilterHook

KIoWorkItem

New Methods
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 (Lets the caller know how many items may be placed in the FIFO before it is full)

Bug Fixes
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. 

Fixed a KTrace/DbgPrint issue known as Format Attack when a badly-formatted input format string could cause erroneous output or even malicious kernel memory overwrite.

Fixed problems with 64-bit compatibility in the WMI classes.

STL support files were modified to coexist with DriverNetworks.

