Linux & Windows: Rewritten the Shared-Buffer (Between User-mode driver
and Kernel PlugIn) capability. It is now more resource-friendly (E.g.
Allows non-contiguous allocation), and has far better chances to succeed.
API was changed as well:
WDC_SharedBufferAlloc/WDC_SharedBufferFree were renamed to
WDS_SharedBufferAlloc/WDS_SharedBufferFree.

Windows: The driver signatures of the WinDriver driver module
(windrvr<version>.sys —
currently windrvr1190.sys) and sample
Kernel PlugIn driver
(kp_pci.sys) were modified
to use the new SHA-2 hashing algorithm. Note that installation of the new
drivers on Windows 7 and Windows Server 2008 requires the
Microsoft Security Advisory 2949927 update.

DriverWizard: Added a license-request data submission form to simplify the
completion of the WinDriver order process.

DriverWizard: Added a Help menu option to check for WinDriver version
updates.

Linux: Fixed an OS crash when terminating an application using
CTRL+C.

PCI interrupts on Linux: Identify device support for Message-Signaled Interrupts (MSIs) or
Extended Message-Signaled Interrupts (MSI-﻿Xs) when the device doesn't also support level-sensitive
interrupts (issue
since v9.1.0).

PCI on Linux: Attempt to enable the maximal possible amount of Message-Signaled Interrupts
(MSIs) for PCI devices that support MSIs (issue
since v10.2.1).

PCI on Windows CE: Added a new WD_ITEM_CE_MAP_VIRTUAL flag to
the WD_ITEM_OPTIONS enumeration, for performing the kernel
mapping of physical memory to non-static virtual system addresses, as
opposed to the default static kernel address mapping.

PCI Express: Added enhanced support for PCI Express cards with the Altera
Qsys design — WinDriver/﻿altera/﻿qsys_design.
The new sample was tested with the Altera Stratix IV GX development kit.

Linux: Improved IOCTLs performance.

PCI on Windows: Added the option to preallocate contiguous DMA buffers as
part of the driver load process (when Windows is started), to prevent
allocation errors caused by memory fragmentation.

Added support for Linux kernel 3.4.7.

Fixes

Linux: Added a /usr/lib64 symbolic link to
/usr/lib for 64-﻿bit distributions in which there
is no /usr/lib64 directory, such as Ubuntu 11.10
(issue
since v11.0.0).

Linux PowerPC (PPC): Fixed the multi-domain PCI scan functionality so that
all domains are displayed (issue
since v11.0.0).

PCI: Fixed a buffer overrun for a registered devices PCI scan
(WDC_PciScanRegisteredDevices() /
WD_PciScanCards() with the WD_PCI_SCAN_REGISTERED
option) when there are more than 100 registered PCI cards
(issue
since v6.0.2).

PCI: Fixed possible data corruption when performing Scatter/﻿Gather DMA from a
64-﻿bit host to a 32-﻿bit device with a buffer containing pages that are
mapped to physical memory above the 4GB address range.

PCI on 64-﻿bit Windows: Removed the -DWINNT flag from the
generated user-mode DriverWizard 64-﻿bit Visual Studio projects. The use
of this flag previously caused incorrect data to be returned when accessing
the device context returned by the WDC_xxxDeviceOpen()
functions
((PWDC_DEVICE)(*phDev)->pCtx) directly
from a user mode application. (Issue
since v10.0.1)

.NET API (Windows): Added missing MSI fields to the definition of the
WD_INTERRUPT structure — dwLastMessage and
dwEnabledIntType — and implemented the
WDC_GET_ENABLED_INT_TYPE,
WDC_GET_ENABLED_INT_LAST_MSG, and WDC_INT_IS_MSI
macros (issue
since v9.1.0).

Obsolete Features

Removed obsolete samples.

Version 11.0.0
(Release Date: February 26, 2012)

New Features

Windows: Added support for Windows 8 and Windows Server 2012
(32-﻿bit and 64-﻿bit).

Windows 64-﻿bit: Fixed the WinDriver installation for paths that contain
spaces (e.g., installation to the
Program Files directory)
(issue
since v8.0.0).

DriverWizard on Windows: By default, save generated projects in the
WinDriver wizard﻿/﻿my_projects directory
(issue
since v10.2.0).

USB on Windows: Fixed an OS crash when a USB device provides a
configuration descriptor with no valid interface (issue
since v7.0.0).

USB on Windows CE: Fixed a delay in the detach sequence when disconnecting
a USB device during streaming (issue
since v10.0.1).

USB streaming on Windows CE: Fixed handling of a 0 (infinite) timeout in
the call to WDU_StreamOpen(); previously this caused an
immediate timeout error, instead of setting no timeout (infinite wait)
(issue
since v10.0.1).

Windows: Fixed a minor 20-byte memory leak upon starting of the WinDriver
driver.

Windows: Added support for Service Pack 1 of Windows 7 and
Windows Server 2008 R2 (32-﻿bit and 64-﻿bit).

Linux: Added support for Linux kernel 2.6.38.

Enhancements

PCI Xilinx samples: The Xilinx Virtex﻿5 sample
(WinDriver/xilinx/virtex5/)
has been replaced with a generic sample for PCI Express cards with the
Xilinx Bus Master DMA (BMD) design — WinDriver/﻿xilinx/﻿bmd_design; the sample files
and APIs were renamed accordingly. The new sample was tested with the
Xilinx Virtex and Spartan development kits.

Mac OS X: Fixed the support for running 32-﻿bit applications —
including the DriverWizard and wddebug_gui
— on 64-﻿bit Mac OS X platforms. As part of this fix, there are now
separate WinDriver distributions for 32-﻿bit and 64-﻿bit Mac OS X.

USB on Windows: Fixed BSOD on return from standby after sending a
SET_CONFIGURATION request from the user mode to the device
(issue
since v9.2.1).

Windows CE: Fixed project_wd.bib to
support installation of the WinDriver kernel module on WinCE﻿6 platforms.

PCI: Removed the previous limitation on the amount of DMA handles that may
be opened simultaneously.

Kernel PlugIn: The Kernel PlugIn interrupt enable and disable functions
were previously not called when using a 32-﻿bit user-mode application with
a 64-﻿bit Kernel PlugIn driver (issue
since v10.3.0).

Kernel PlugIn on Windows: Fixed BSOD as a result of disabling and enabling
of the WinDriver kernel module while there is an enabled Kernel PlugIn
driver.

Kernel PlugIn: Fixed the sample and DriverWizard generated C and C﻿#
PCI code to pass the correct context type from the user mode to the Kernel
PlugIn driver, and fixed the context casting in the Kernel PlugIn high-IRQL
legacy interrupts handler, to resolve a previous OS crash when receiving
legacy interrupts (issue
since v10.3.0).

Kernel PlugIn: Fixed a bug in the sample and DriverWizard generated
Kernel PlugIn open functions, which previously resulted in an OS crash when
opening a handle from the user mode to the Kernel PlugIn driver
(issue
since v10.3.0).

Obsolete Features

Stopped support for Windows 2000.

Version 10.3.0
(Release Date: January 30, 2011)

New Features

Windows: Added a version of the WinDriver .NET API DLL
(wdapi_dotnet<version>.dll) for
.NET Framework 4.0.

Linux: Added support for Linux kernel 2.6.37.

Enhancements

USB on Windows CE: Improved streaming performance.

PCI on Linux and Mac OS X: Implemented the
WDC_GET_ENABLED_INT_LAST_MSG macro, for retrieving the message
data of the last received MSI/MSI﻿-X interrupt.

USB on Windows: Added a .NET wrapper for
WDU_SelectiveSuspend().

Kernel PlugIn (PCI on Windows, Linux, and Mac OS X): Added support for
communicating with a 64-﻿bit Kernel PlugIn from a 32-﻿bit application.
The changes include a new KP_INIT struct field
(funcOpen_32_64), and improvements to the PCI Kernel PlugIn
sample (kp_pci) and the DriverWizard
Kernel PlugIn code generation.

Fixes

Windows: wdreg — fixed
enabling/disabling of multiple devices in an INF file when encountering
an error with one of the devices.

PCI on Linux x86_64: Fixed a crash during PCI read/write operations —
for example, in calls to WD_Transfer(), or during the
execution of interrupt transfer commands.

USB on 64-﻿bit Windows: Fixed an OS crash when calling
WDU_StreamGetStatus() from a 32-﻿bit application.

Linux 2.4.x: Fixed the WinDriver build process (issue
since v10.2.1).

USB on Windows: Fixed the behavior of isochronous write (OUT) streams with
the USB_ISOCH_NOASAP flag set.

Windows: Fixed the support for the Windows 7 WDK build options —
win7 and win7_x64 — in the
ddk_make.bat build script. This also
resolved related Kernel PlugIn build issues.
(Issue
since v10.2.1)

PCI on Windows: WDC_PciDeviceOpen() — fixed
identification of PCI devices that were not registered with WinDriver
(issue
since v10.2.1).

PCI on Mac OS X: Fixed occasional calls to the user interrupt handler
when no hardware interrupt had occurred.

PCI on Mac OS X: Fixed the value of the virtual kernel-mode mapped address
returned by WDC_DMAContigBufLock(),
WDC_SharedBufferAlloc(), and WD_DMALock(), for a
contiguous DMA or shared buffer allocation.
The fix resolved an OS crash when using the returned address in a data
transfer.

PCI on Mac OS X: Fixed the detection of device memory regions.

PCI on Mac OS X and Windows CE: Added interrupt resource cleanup for devices
that have not been explicitly closed by the application, as part of
WinDriver's application cleanup.

PCI: Fixed an application crash upon passing an invalid device handle to
WDC_ReadXXX() or WDC_WriteXXX().

Windows Mobile ARMV4I: Fixed incorrect path to the WinDriver-API library in
the sample and generated WinDriver Platform Builder projects, which caused the
project build to fail (issue
since v7.0.1).

PCI on Linux PPC: Fixed the scan for PCI cards on Linux PPC kernel 2.6.23
and above, which previously resulted in problems locating all connected PCI
cards and opening the cards using the WinDriver utilities
(issue
since v9.1.0).

Windows 64-﻿bit: Fixed an internal race condition that caused occasional
OS crashes when running 32-﻿bit applications on 64-﻿bit Windows
platforms, including when powering off a USB device during the
application's execution.

PCI/PCMCIA/ISA on 64-﻿bit operating systems: When running 32-﻿bit
applications on 64-﻿bit platforms, the device registration — using
WDC_PciDeviceOpen() / WDC_PcmciaDeviceOpen() /
WDC_IsaDeviceOpen(), or WD_CardRegister() —
previously ignored the item registration options that were set in the
dwOptions field of the WD_ITEMS structures.

Version 10.1.1
(Release Date: January 14, 2010)

Enhancements

Kernel PlugIn (Linux): Modified the distribution method for Linux Kernel
PlugIn drivers, to allow distribution of the drivers without their source
code.

Kernel PlugIn (Linux): Added support for building Kernel PlugIn drivers
using the kbuild framework.

PCI: Added a new WDC_PciScanRegisteredDevices() function for
scanning the PCI bus only for devices that have been registered to work
with WinDriver.

Fixes

USB: Modified the usb_diag.c sample and
the usb_diag_lib.c library to support
reading, writing, and reseting of pipes on inactive interfaces of a
multi-interface device.

USB streaming: Modified the USB streaming API and the
usb_diag sample to prevent attempts to
perform stream transfers on the control pipe.

Linux: Fixed the support for the --enable-usb-support=no
configuration option for WinDriver kernel module builds
(issue
since v10.0.0).

Linux and Windows installation: Fixed potential WinDriver installation
crashes due to incorrect use of ACPI tables.

Windows USB: Fixed a potential OS crash when using
WDU_Transfer() to perform a data-pipe transfer with a
non-NULL setup packet (issue
since v10.0.0).

PCI/PCMCIA/ISA: Fixed the definitions of the
WDC_DBG_DBM_FILE_ERR and WDC_DBG_DBM_FILE_TRACE
macros.

USB streaming API: Calls to WDU_StreamRead() for a blocking
stream would previously fail to return when the size of the data read from
the device was larger than the remaining space in the stream's data buffer
(issue
since v9.0.1).

PCI/PCMCIA/ISA: Removed the inclusion of the
status_strings.h header file from
wdc_defs.h, and instead, included
status_strings.h explicitly from the
relevant source files.

Fixes

DriverWizard (Windows PCI/PCMCIA/ISA): When generating code on
Windows using a saved DriverWizard PCI/PCMCIA/ISA project, the generated
INF file did not contain the device's vendor and product IDs
(issue
since v9.0.1).

Interrupts: Fixed an issue with the lost-interrupts counter, which could
result in repeated calls to the user's interrupt handler even when no
interrupts were generated.

USB (Windows): Fixed Windows OS crash when a single-blocking USB
transfer returned due to timeout expiration (issue
since v10.0.1).

USB (Windows CE): Fixed delays in the return of
WDU_StreamStop() and WDU_StreamClose(), on
Windows CE (issue
since v10.0.1).

DriverWizard (ISA): Previously, if an ISA card had both I/﻿O BARs and
other types of resources (memory BARs and/or an interrupt), the I/﻿O
resource information in the generated DriverWizard code was overwritten by
the information of the other resources.

Linux: On some Linux distributions, make install failed to
load the WinDriver kernel modules, because the modules were not
installed in the correct location (issue
since v9.0.1).

DriverWizard: Added an error message when trying to use DriverWizard
while the WinDriver kernel driver is not loaded (issue
since v9.0.1).

Version 10.0.1
(Release Date: April 1, 2009)

New Features

Linux: Added support for the Linux 2.6.28 kernel.

USB (Windows CE): Added support for USB streaming on Windows CE.

Enhancements

Linux: The windrvr6 driver installation
now verifies that the version of the driver matches that of the installed
windrvr6_usb driver (if installed).

Windows USB: Added Selective Suspend support to the
usb_diag sample and to the generated
DriverWizard USB code.

Debug Monitor (Windows CE): Added support for GUI execution of the
wddebug Debug Monitor utility on Windows
CE, allowing for its usage on Windows CE platforms that do not have a
command-line interface.

PCI/PCMCIA/ISA: Fixed the WDC_DIAG_ReadWriteAddr() and
WDC_DIAG_ReadWriteBlock()wdc_diag_lib functions to correctly handle
Cancel input; this fix affects the
pci_diag and
pcmcia_diag samples and the generated
DriverWizard code (issue
since v7.0.0).

USB streaming API (Windows): WDU_StreamGetStatus() now returns
WD_TIME_OUT_EXPIRED in case of a timeout
(issue
since v9.0.0).

Version 10.0.0
(Release Date: December 30, 2008)

New Features

Linux: Added support for the Linux 2.6.25–2.6.27 kernels.

Linux USB: Moved the WinDriver USB implementation for Linux to a separate
driver module (windrvr6_usb) with a GNU
General Public License (GPL).

Enhancements

Windows: Added official support for the Windows Server 2008 operating
system.

Windows Vista: WinDriver was successfully tested with Service Pack 1 of
Windows Vista.

Windows XP: WinDriver was successfully tested with Service Pack 3 of
Windows XP.

PCI: Added enhanced support for the PLX 6466 bridge, including library APIs
(plx_lib_6466) and a sample diagnostics
application (p6466_diag).

Windows: Added support for the Microsoft Visual Studio 2008 IDE.

Windows: Enhanced the ddk_make.bat build
script, and the MS Visual Studio Kernel PlugIn projects in the samples and in the
generated DriverWizard code:

Added a build environment for Windows Vista x64bit.

Added support for the build options in version 6001 (and newer)
of the Windows Driver Kit (WDK).

Fixes

USB: Fixed crashes when using DriverWizard and the
usb_diag sample with multi-interface USB
devices (issue
since v9.2.1).

DriverWizard PCI/PCMCIA/ISA: Fixed saving of register access modes in
DriverWizard projects; previously, when opening a saved DriverWizard
project, the access mode for any defined registers was set to
Read/Write, regardless of the access mode that was originally
defined. (Issue
since v9.0.0)

PCI/PCMCIA/ISA: Added a WDC_SharedBufferAlloc() function for
allocating a shared user-mode and kernel-mode memory buffer — namely
for the purpose of sharing data between a user-mode application and a
Kernel PlugIn driver.

DriverWizard (Linux): DriverWizard for Linux is now statically linked with
the QT libraries, enabling usage of the wizard on these operating systems
regardless of whether the QT libraries have been installed on the target
platform (issue
since v9.0.0).

USB Streaming API: Added a new WDU_StreamOpen() flag —
USB_STREAM_OVERWRITE_BUFFER_WHEN_FULL — for overwriting
a read stream's data when there is not enough free space in the stream's
data buffer to complete the transfer.

USB: Enhanced WDU_Transfer() to enable initiation of
zero-length transfers by either setting the buffer size to zero or passing
a NULL buffer pointer.

Windows: Modified the wdreg installation
utility to load the Driver Install Frameworks API (DIFxAPI) DLL only when the program is run
without the -compat flag (issue
since v8.1.0).

Windows: Modified the wdreg installation
utility to avoid automatic rescan for new hardware when installing the
WinDriver kernel module (windrvr6.sys or a
renamed version of this driver). (Issue
since v8.1.0)

DriverWizard PCI/ISA: Added support for opening legacy DriverWizard
projects created with earlier versions of WinDriver (issue
since v9.0.0).

.NET PCI/PCMCIA/ISA: Modified the WinDriver .NET API DLL
(wdapi_dotnet<version>.dll) in order
to prevent the garbage collector from relocating transfer commands used for
interrupt handling while the interrupt is enabled
(issue
since v7.0.0).

USB: Modified the Silicon Laboratories C8051F320 sample
(c8051f320_diag) to support buffer sizes
that are not multiples of 4KB.

.NET (PCI/PCMCIA/ISA): Modified the WinDriver-API DLL
(wdapi_dotnet<version>.dll), and the
C﻿# PCI sample (PCI_Sample) and PLX
library (plx_lib_dotnet), in order to
provide specific support for accessing the interrupt transfer commands
array from the interrupt handler routine.

Windows USB: Configuration of USB devices with a large configuration
descriptor previously failed with error
WD_USB_DESCRIPTOR_ERROR.

Linux: Added support for Linux kernels 2.6.17–2.6.18 and the Fedora
Core 6 pre-releases.

USB: Added enhanced support for the Agere USS2828 USB chip,
including library APIs (uss2828_lib and
uss2828_diag_lib) and a sample application
for the device's default firmware
(default_firmware_sample).

Windows PCI: Multi-transfer functions (WD_MultiTransfer() /
WDC_MultiTransfer()) now also handle mask commands
(CMD_MASK) when called from 32-﻿bit applications that are run
on 64-﻿bit architectures (issue
since v8.0.0).

Obsolete Features

Stopped support for Windows NT 4.0.

Linux: Stopped support for the Intel Itanium and Itanium 2
architectures (IA64).

Version 8.0.2
(Release Date: June 6, 2006)

New Features

Added support for Windows Mobile 5.0.

Linux: Added support for kernels 2.6.14–2.6.16.

WinDriver USB Device (Firmware Development Kit): Added support for the Silicon
Laboratories C8051F340 development board.

Windows CE: Added a WinDriver component to the Platform Builder catalogue to
simplify the driver deployment.

WinDriver USB Device (Firmware Development Kit): Added support for compiling
Microchip PIC18F4550 firmware with version 3.0 of the MCC18 compiler.

Enhancements

PCI/PCMCIA/ISA: Improved the performance of WD_Transfer()
and WD_MultiTransfer() and the WDC APIs that use these
functions (WDC_Read/WriteXXX(), WDC_AddrXXX() and
WDC_MultiTransfer()).

PCI/PCMCIA/ISA: Fixed and improved the clean-up functionality: Improved the
performance of WD_CardCleanup() /
WDC_CardCleanupSetup() and ensured that the clean-up commands
set in the calls to these functions are executed as the first thing upon
termination of a WinDriver application.

Windows: Added support for Visual Studio 2005 on x86 and AMD64, including
sample and generated DriverWizard C, C﻿# and Visual Basic .NET projects.
Note: As a result of this addition, the directories structure of the WinDriver
C and .NET sample and generated DriverWizard projects has changed.

Linux: Added support for the Intel Itanium and Itanium 2 architectures
(IA64).

Linux: Added support for Linux 2.6.14.

Solaris: Added support for Solaris 10 and OpenSolaris.

WinDriver USB Device (Firmware Development Kit): Added support for development
of device firmware for the Philips PDIUSBD12.

Solaris and Windows CE: Modified and improved the samples and generated
DriverWizard code in accordance with the Windows and Linux sample and
generated code, including use of the new
wd_utils DLL/shared object and the
WDC API.

Linux and Solaris: Added the wd_utils
makefile to the WinDriver distribution.

Windows: Modified and improved the .NET USB C﻿# and Visual Basic samples.
The samples now use the new
wdapi_dotnet.dll and
usb_lib_dotnet.dll DLLs, which replaced
the wdnetlib.dll DLL from v7.0.0 of WinDriver
(see the New Features).

PCI/PCMCIA/ISA: The generated DriverWizard C code now defines an
enumeration of all local registers defined in the wizard and includes
functions for reading and writing these custom registers.

PCI/PCMCIA/ISA: Fixed generated DriverWizard C interrupt code.
Previously the code always used the first register assigned to the
interrupt in the wizard (originated in v7.0.0).

USB on Windows: Fixed rare crash that could occur when a device was
unplugged immediately after being plugged-in.

USB on Windows CE: Prevent possible situation of inability to access USB
devices if the device was connected to the target platform before Windows
CE was loaded (originated in v6.2.3).

USB on Windows: Fixed compatibility issue with the old WinDriver
WD_UsbScanDevice() function, whereby the function returned the
actual interface number when it should have returned
WD_SINGLE_INTERFACE (originated in v7.0.0).

USB on Windows: Fixed system halt that previously occurred if the transfer
timed-out before the actual transfer began.

Windows CE: WD_DMALock() previously failed when called for
cards that have not been registered with the PCI bus driver in the registry
(originated in v6.2.3).

USB on Windows: DriverWizard previously identified USB devices that have
been registered with WinDriver as not configured to work with WinDriver if the
device was being used when the wizard created the devices list.

DriverWizard: Fixed bug whereby if multiple register access commands to the
same register were assigned to the interrupt in the wizard, only the last
command was saved in the *.wdp
DriverWizard project.

PCI/ISA/PCMCIA: Added an option to avoid mapping of PCI/ISA/PCMCIA memory
resources to the kernel-mode (map the resources only to the user-mode
virtual address space). This allows registration of large memory ranges
without overburdening the system.
NOTE: By default, WinDriver attempts to map a device's memory resources both
to user mode and to kernel mode (as done in previous versions).

Visual Basic USB sample and generated code: Fixed the default alternate setting
number in the generated code which was previously set to the selected
interface number (since v6.0.0).

Visual Basic USB sample and generated code: Fixed flawed implementation of
ListenToPipe() function and related functions, due to lack of
good support for multi-threading and CreateThread() in VB
(specifically VB 6.0). ThreadStart/Stop() Visual Basic functions are
now replaced with VB_ThreadLoopStart/Stop() DLL functions and
Listen loop runs in the DLL (not in the user thread function).

Delphi USB: Previously, in PrintEndpoints() function in
usb_diag_lib.pas sample, endpoints data
was inaccurate and the application terminated if there were zero endpoints
(since v6.0.0).

Linux 2.4: Resolved previous problem, where on some computers there was a
failure in reading from the PCI card's memory (read only 0xffffffff). The
problem is resolved by calling pci_enable_device() function.

Windows CE: Improved implementations of spinlock and events.

PLX samples: Resolved previous application error caused by read/write from
local addresses due to miscalculation of dwMask (since
v6.0.0).

Delphi: support for new USB API, including sample code and wizard code
generation.

Support for Linux kernel 2.4.20.

Enhancements

Windows: In the Debug Monitor (wddebug_gui
or wddebug) an extra functionality was
added to the Send debug messages to kernel debugger option. When enabled,
WinDriver debug messages will be sent to the kernel debugger during WinDriver
activation in the next boot.

Linux: Resolved previous crash in the case of repeated allocations of small
contiguous DMA buffers with WD_DMALock() calls.

Linux: Fixed problems related to simultaneous usage of WinDriver v6.0X and
WinDriver v5.2.2 or lower on the same PC (since v6.0.0).

Wizard USB projects (*.wdp files):
Disabled Save option. This option is no longer supported beginning with
v6.0.0 (since it has no real significance), but was inadvertently still
enabled in the wizard in v6.0.0-6.0.1 (since v6.0.0).

USB generated code: Solved the problem where code generated in v5.2.2 or
lower and rebuilt with v6.0X failed to activate
event_register() (since v6.0.0).

Visual Basic PCI: Generated code: Fixed WD_License() call by adding
a NULL character to the end of the license string that is sent to the
function, so that it will be interpreted as an ANSI string by the C DLL.

USB Delphi code generation is now disabled in DriverWizard (not supported
from v6.0.0).

Added windrvr_isr() hook on VxWorks to allow the user to add
code to an interrupt handler.

Added enabling of PCI bus mastering on Linux to solve a problem with
several BIOS that do not support this natively.

Enhancements

Improved support for USB composite devices performing control transfers.

WinDriver and KernelDriver documentation improved, including restructuring,
many contents fixes and useful additions.

Fixes

Windows

Fixed a bug in the WDREG utility,
which caused to fail on Windows 95.

Linux

Fixed the generated Kernel PlugIn makefile on Linux. Previously in some
cases "make install" would install the wrong files. Also the makefile
now identifies various problems during the installation and
automatically fixes them.

Fixed a bug in KernelDriver's function KD_OpenWinDriver() in
kd.lib, on Win32 platforms.
Previously only the first call to this function was successful, while
consequent calls would fail.

Version 5.2.1
(Release Date: October 23, 2002)

Enhancements

Several transfer commands that acknowledge an interrupt/for interrupt
acknowledgment can now be set in DriverWizard.

Improvement of Debug Monitor buffer overflow behavior, so that older
messages are lost rather than new messages.

Added DMA_ALLOW_CACHE option to WD_DMALock(). It
allows the locked memory on Windows NT, 2000 and XP to be cached to the
CPU, thereby achieving a major increase in DMA speed (however it may cause
data corruption).

WinDriver can now automatically install an INF file for a device which is not
connected to the computer.

KernelDriver can now be loaded prior to loading
WINDRVR.SYS.

Fixes

General

Fixed a bug that caused memory corruption and BSOD on Win2000/XP, when
performing contiguous DMA and calling WD_DMAUnlock().

Fixed BSOD when KernelDriver calls WD_IntCount() from
high IRQL (usually the function is called from
windrvr_int_thread.h ISR).

Fixed BSOD in cases when a LOT of interrupts (2\^31) are generated
but no application/driver is registered to listen to them.

Fixed a bug that caused a potential for BSOD on each call to the
Kernel PlugIn (especially on checked build when using Microsoft
Driver Verifier).

Added enhanced support for PLX Technology's new product line, the PCI 9656
I/﻿O Accelerator chip. The enhanced support includes special set of API
which implements PLX 9656 access and control, as well as sample
application, which can be used as a skeletal driver.

KernelDriver now supports generating drivers using all versions of DDK for
all Windows operating systems, with extended support for Visual C﻿+﻿+.

On Solaris 2.6, Fixed a bug that caused a crash when trying to
open non-existing Kernel PlugIn.

Version 5.0.5b
(Release Date: August 28, 2002)

New Features

Added support for Windows 2000 service pack 3.

Version 5.0.5
(Release Date: May 5, 2002)

New Features

Added enhanced support for PLX Technology's new product line, the PCI 9056
I/﻿O Accelerator chip. The enhanced support includes special set of API
which implements PLX 9056 access and control, as well as sample
application, which can be used as a skeletal driver.

Enhancements

Improved interrupt handling on Windows NT 4.0 running on a computer with
APIC (Advanced Programmable Interrupt Controller) chip, by retrieving PCI
related data from the OS instead of directly from the hardware.

Fixes

General

Fixed a bug in DriverWizard that caused issuance of "The resource is
overlapped with another resource" warning messages on wrong
circumstances.

Fixed a bug that, when using a kernel PlugIn, sometimes caused an
interrupt not to be handled by the kernel PlugIn's DPC routine if the
interrupt occurred immediately after it was enabled.

Windows

Fixed a bug that caused BSOD when using the DriverWizard generated INF
file on certain PCI devices (a bug since v5.0.4).

Fixed the file KP_95.lib which was missing several functions required
for compiling Kernel PlugIn projects under Windows 95 (a bug since
version 5.0.4).

Unix

Fixed a bug that caused some Unix environment variables to be
overridden by DriverWizard.

WinDriver for USB — New API: WD_UsbResetDeviceEx(), allows
reset of devices that are not in disabled state.

WinDriver for USB — Added USB_SHORT_TRANSFER option to
WD_UsbTransfer(). If set, the function will return
successfully if a short packet (less than maximum packet size) was
transferred, regardless as to whether the data buffer was filled.

WinDriver for USB — Added USB_FULL_TRANSFER option to
WD_UsbTransfer(). If set, the function will return
successfully if all the requested data was transferred.

The descriptions and remarks embedded in the code generated by the
DriverWizard were improved.

Fixes

PCI — General

Access to EEPROM of PLX 9030, 9054 and IOP480 chipsets was improved.
Now when access to EEPROM of these chipsets fails, WinDriver retries the
entire access process.

Interrupt handling by DriverWizard was fixed. A bug since version 5.0
caused DriverWizard to handle interrupts without implementing all the
parameters assigned by the user; this affected level sensitive
interrupt handling and data transfer operation type definition.

Execution method of interrupts transfer commands was improved. Now the
interrupt transfer commands are executed only if the application
handling the interrupts exits abnormally. A bug since version 4.4.0
caused interrupts transfer commands to be executed each time the
interrupt was disabled.

DriverWizard was fixed to disable generation of
XXX_AccessRanges(hXXX) functions when the relevant PCI
device has no I/﻿O or memory resources at all. This bug caused
compilation errors when trying to compile generated code for devices
with no I/﻿O or memory resources.

Windows NT 4.0 — PCI

Fixed the support for interrupt handling on dual CPU platforms.
Interrupt line and device resources information is now retrieved from
the operating system (instead of directly from the hardware).

Windows 9x — PCI

Set Auto Masking for non-sharable interrupts only. A bug since v4.4.2
could have caused WD_IntDisable(), when using sharable
interrupts, to disable other interrupts as well.

Linux — General

The operation of the function WD_DMALock() for contiguous
DMA under Linux was fixed. The bug caused the function to reserve one
extra page (if the allocation was page aligned). This resulted in
kernel panic inside kfree() (which was observed when the
following sequence was performed: lock, lock, free, free).

Fixed a dependency problem between
windrvr.sys and
wdpnp.sys. A bug since version 5.0.3
caused windrvr to return error code 37
(STATUS_INTERNAL_ERROR) if
wdpnp.sys was loaded before
windrvr.sys/vxd. Now, the resource
management is handled by wdpnp.sys
instead of windrvr.sys/vxd and if
windrvr.sys/vxd is loaded after
wdpnp.sys, it will initiate the
transfer of the card resources instead of
wdpnp.sys.
Moreover, now wdpnp.sys does not
assume that windrvr.sys is loaded and
the two files open a communication path between them only to perform
short operations, and then close it. This allows eliminating the
dependency between the files and results in an improved stability and
robustness.

Fixed the method wdpnp.sys retrieves
the bus number of PCI devices. It now retrieves the bus number by
directly inquiring the PCI devices, instead of inquiring the Windows
operating system, since the operating system always returns 0.

Fixed IDE to invoke combo box behavior on Windows platforms. The bug
caused the default IDE to invoke to be "none". Now IDE to invoke is
with accordance to the IDE chosen by the user to generate project
makefiles for; the default IDE to invoke is MS Visual C﻿+﻿+ 6.0.

USB

The "send to pipe" operation in DriverWizard was fixed to allow input
of long data strings (i.e., more than 1024 chars). The bug caused
DriverWizard to issue application error when long data strings were
sent.

Timeout expiration was fixed to avoid BSOD if the USB device is no
longer connected.

WinDriver now uses the operating system's DeviceAddress as a USB uniqueId
instead of obtaining the Pointer to Device Object (PDO) from the
operating system. Now WinDriver obtains the PDO only for the purpose of
communicating with the USB device at the
WD_GetConfiguration() and WD_DeviceRegister()
stages. The reason is that obtaining the PDO is an intrusive operation,
which could interfere with the operation of other devices drivers.

For Isochronous data transfers, now WinDriver sends the last packet in a
separate transaction, instead of the same transaction. The bug caused,
in certain circumstances, the operating system USBD to send the last
packet twice.

KernelDriver

DriverWizard was fixed to allow the Debug Monitor GUI to run under
Linux.

Fixed DriverWizard so that it will generate code with an IOCTL to
perform WD_License().

Version 5.0.3
(Release Date: September 12, 2001)

New Features

WinDriver and KernelDriver support Windows XP(RC1).

WinDriver supports Windows CE 3.0.

WinDriver and KernelDriver support Linux kernel 2.4.x.

Enhancements

The Debug Monitor (wddebug_gui),
previously available in the Windows versions only, is now available under
the Linux and Solaris versions as well.

Fix: Added the documentation about the function
WD_UsbResetDevice() which was missing from the version 5.0.0
manual.

Version 5.0.1
(Release Date: May 8, 2001)

New feature: Added a new remote pci_dump
(rpci_dump) sample.

Enhancement: Web versions are full featured, but include less
documentation formats. The KernelDriver web version also does not
include the source code for the provided classes and the compiled debug
library.

Enhancement: Several minor DriverWizard enhancements.

Documentation

New feature: Enabled .hlp files in WinDriver
and KernelDriver.

New feature: Added remote driver development procedure to the manuals.

Enhancement: Improved the section of Scatter Gather DMA for buffers larger
than 1MB in manual.

DriverWizard

Fix: Several minor DriverWizard bug fixes.

Fix: The PCI INF file generated by DriverWizard now copies
wdpnp.sys to the correct location.

WinDriver

Fix: In WinDriver for USB code generation for registered users is fixed to
call the WinDriver registration before attempting to scan for USB devices.
Previously, the code failed at Usb_scan().

Fix: In WinDriver for USB when writing to a USB pipe eliminated DriverWizard
writing of ASCII data instead of HEX data.

Fix: On Windows Net.lib now includes all
functions that are needed for the Remote Access feature.

Fix: The compilation for Delphi generated code for USB is fixed, after the
generated code did not compile due to declaration of fRead as
BOOLEAN instead of DWORD.

Version 5.0.0
(Release Date: April 12, 2001)

New feature: Added a Graphical User Interface (GUI) to WinDriver for Linux and
WinDriver for Solaris.

New feature: A Remote Access feature was incorporated into DriverWizard.
Remote Target is currently supported on Windows NT/2000, Linux and Solaris.
Remote Host supported on NT/2000/9x/ME/CE, VxWorks, Solaris and Linux.

New feature: The evaluation timeout per session on
Linux/Solaris/VxWorks/WinCE was expanded to 30 minutes.

New feature: The electronic documentation (PDF) now has thumbnails,
bookmarks, and cross-reference hyperlinks in the references sections.
HLP (WinHelp) files have cross reference hyperlinks.

DriverWizard

Fix: Several fixes in files saving process and in reading from the
registry.

Fix: The INF data generated by DriverWizard under Windows 2000 now complies
with MS recommendations for Windows 2000.

Enhancement: Wizard for Windows allows choosing between WinDriver and
KernelDriver help files when invoked.

For memory mapped cards: you can now directly access the memory region,
without calling WD_Transfer(). The pointer to the memory
region is returned in dwUserDirectAddr returned by
WD_CardRegister().

DMA transfers: DMA contiguous buffer allocation by WinDriver is available by
setting dwOptions = DMA_KERNEL_BUFFER_ALLOC, when calling
WD_DMALock(). the linear address of the buffer allocated will
be returned in pUserAddr, and the physical address in
Page[0]. the buffer is available until calling
WD_DMAUnlock().

Version 2.1.1
(Release Date: March 11, 1997)

For PCI cards: Structure used for calls to WD_PciScanCards()
was changed. Use pciScan.searchId.dwVendorId and
pciScan.searchId.VendorId and the same for
dwDeviceId.