LibUsbDotNet Version History

V2.2.4 (03/14/2010)
====================
  * [Fixed] Bug ID: 2969931 - Linux xbuild issue. 
    The xbuild utility failed to build the LibUsbDotNet.sln. This was caused 
    by an invalid resource in the InfWizard application and a casting issue 
    for function that take a Predicate<> as a parameter. 

  * [Fixed] Bug ID: 2956665 - UsbDeviceFinder fails to find VID and PIDs > 
    0x7FFF. 
    USB devices that have VID or PIDs greater than 0x7FFF are not found by the 
    UsbDeviceFinder class. 

  * [Added] UsbDevice.Exit method. 
    This was added to support the Libusb-1.0 windows backend port. If the usb 
    device is using Libusb-1.0, this method must be called before the 
    application exits. 

  * [Added] Asynchronous transfer functions to UsbEndpointBase. 
    For more details see the NewAsyncTransfer and SubmitAsyncTransfer 
    functions in the UsbEndpointBase class. 

  * [Added] Low-level .NET MonoLibUsb API for Libusb-1.0.
    The low-level MonoLibUsb API (Libusb-1.0) is supported on many platforms 
    including windows via the Libusb-1.0 windows-backend port. 
    
    Unlike the LibUsbDotNet API, MonoLibUsb has full support for all Libusb-
    1.0 functions.

  * [Added] UsbRegistry.ForceSetupApi option. 
    This option forces LibUsbDotNet to gather extra device information via the 
    windows setup api for devices using drivers that do not support the 
    setupapi. 

  * [Added] UsbDevice.ForceLibUsbWinBack option. 
    This option forces LibUsbDotNet to use only the Libusb-1.0 windows backend 
    driver. 


PREVIOUS VERSIONS
==================

    V2.2.3 (01/30/2010)
    ====================
      * [Removed] - GetConfiguration call in UsbDevice.Open method. 
        The UsbDevice.Open method requests the usb devices current 
        configuration upon opening. This causes problems in some situations. 

      * [Added] IUsbDevice.ResetDevice method.

      * [Fixed] Bug ID: 2937372 - Read Failed:WaitHandle.WaitOne missing 
        member exception. 
        If .NET 3.5 is not installed, a System.Threading.WaitHandle.WaitOne 
        missing member exception is thrown. LibUsbDotNet should not require 
        the 3.5 runtime. It should work with 2.0 and greater. 

      * [Fixed] Bug ID: 2935627 - Stack overflow when reading an ep that does 
        not exists. 
        If an attempt is made to open and transmit to a non-existent endpoint 
        a stack overflow occurs. Expected behavior is to throw an exception. 

      * [Fixed] Bug ID: 2935456 - UsbDevice.KernelType property not set 
        correcty. 
        [Windows Only] If the UsbDevice.KernelType is accessed when no device 
        are connected it does not update properly when a device is connected. 


    V2.2.2 (01/19/2010)
    ====================
      * [Fixed] Bug ID: 2934547 - DeviceNotifier not working. 
        On Linux like OSes the DeviceNotifier never fires events. On Windows, 
        a DllNotFound exception is thrown. 

      * [Fixed] Bug ID: 2933530 - Composite WinUSB not found. 
        WinUSB interfaces that are part of a composite device do not appear in 
        the WinUsbRegistry.DeviceList. 


    V2.2.1 (01/13/2010)
    ====================
      * [Fixed] Bug ID: 2930836 - [OSX PPC] GetDescriptor request fails. 
        On big-endian platforms, the descriptor type and index bytes are 
        reversed. 

      * [Fixed] Bug ID: 2927179 - Wrong versioning. LibUsbDotNet 2.2.0 all 
        AssemblyInfo.cs contains [assembly:AssemblyVersion("2.1.0.13")]

      * [Updated] Benchmark application: Removed all calls to Control.Invoke. 
        The benchmark application now uses a timer control to periodically 
        update the display instead of "Invoking" an update everytime data is 
        transferred. This provides a more accurate benchmark reading as well 
        as a work-a-round for Mono .NET runtimes on platforms that do not 
        properly implement the Control.Invoke method. 

      * [Removed] LINUX compiler option. 
        The LINUX compiler option is no longer used. LibUsbDotNet (v2.2.1 and 
        above) is fully platform independent. 


    V2.2.0 (12/29/2009)
    ====================
      * [Added] Linux support. 
        LibUsbDotNet supports linux via the linux libusb v1.x driver. 

      * [Updated] UsbDevice.OpenEndpointReader and 
        UsbDevice.OpenEndpointWriter members to first lookup the endpoint 
        descriptor for the current configuration. 
        If an attempt is made to open an endpoint on a unconfigured device 
        (GetConfiguration = 0) an exception is thrown. 
        
        If an attempt is made to open a non-existent or invalid endpoint an 
        exception is thrown. 

      * [Added] endpoint descriptor information to UsbEndpointBase class. 
        A New property, 'EndpointInfo' is available from the UsbEndpointBase 
        class. 

      * [Removed] Depricated UsbGlobals class. 
        The UsbGlobals class has been rendered obsolete and will be removed in 
        future release. Update your code you use the UsbDevice class instead. 


    V2.1.0 (11-02-2009)
    ====================
      * [Fixed] Bug ID: 2886021 - Problem with several instances of the same 
        device (WinUsb) 
        When connecting 2 (or more) identical USB devices, the library has 
        problems opening each device instance. 

      * [Fixed] Bug ID: 2873320Bug ID: 2874172 - Error getting Key 
        "SymbolicName" 
        Some devices having no SymbolicName. In this case, the main 
        application or .NET framework crashes. 

      * [Fixed] Bug ID: 2853283 - Infwizard exception thrown on load 
        The InfWizard throws an exception when loaded. 

      * [Added] support for the genuine libusb-win32 kernel driver. 
        If the LibUsbDotNet native kernel driver is not detected it falls back 
        to the original libusb-win32 kernel driver. Using the native driver is 
        recommended. 

      * [Added] static open method to the LibUsbDevice class. 
        Opens a libUsb device from a user suppiled device filename. 
        
        public static bool Open(string deviceFilename, out LibUsbDevice 
        usbDevice)

      * [Added] static open method to the WinUsbDevice class. 
        Opens a WinUSB device from a user suppiled device path (symbolic link).
        
        
        public static bool Open(string devicePath, out WinUsbDevice usbDevice)

      * [Removed] DeviceInterfaceGuid property from WinUsbDevice class. 
        A DeviceInterfaceGuid is not required for a WinUsbDevice. 

      * [Removed] UsbRegistryInfo property from UsbDevice classes. 
        A UsbRegistry instance is not required for the UsbDevice classes. 

      * [Removed] device and endpoint level locking features. 
        The device and endpoint level locking features had specfic 
        requirements pertaining to the usb symbolic name that could not always 
        be met. 


    V2.0.3 (09-03-2009)
    ====================
      * [Fixed] Bug ID: 2845680 - LibUsbDotNet-libusb-win32 v2.1.12.1 
        GET_INTERFACE request fails in XP SP3 
        The GET_INTERFACE request in the libusb kernel driver fails on Windows 
        XP SP3 but works under windows Vista. 

      * [Fixed] Bug ID: 2845679 - InfWizard Spawn driver function problems. 
        The InfWizard spawn driver function fails to locate WinUSB support 
        drivers from the DDK install directory. 

      * [Added] UsbException on non-existent endpoint. 
        If an an attempt is made to open an endpoint that does not exists, a 
        UsbException is thrown. 

      * [Updated] LibUsbDotNet-libusb-win32 kernel driver. 
        Applied LibUsbDotNet kernel driver patches to libusb-win32 v0.1.12.2. 
        LibUsbDotNet-libusb-win32 v2.1.12.2 kernel created. 

      * [Updated] Test_Bulk application. 
        Removed all references to benchmark device. The Test_Bulk apllication 
        is more universal and easier to tailor to specific devices. 

      * [Updated] documentation.


    V2.0.2 (08-16-2009)
    ====================
      * [Fixed] Bug ID: 2833695 - USB rev. code treated as hex instead of bcd. 
        The USBSymbolicName class is converting the bcd revision number to a 
        hex number. 

      * [Fixed] Bug ID: 2833701 - InfWizard never populates the "Driver 
        Information" property. 
        On the final wizard page of the InfWizard the "Driver Information" 
        property under the "Info" category is never populated. 

      * [Added] InfWizard remove device options form.

      * [Added] InfWizard disclaimers.

      * [Added] Benchmark PIC device firmware for MCP 2.5 USB stack.

      * [Updated] documentation.


    V2.0.1 (07-09-2009)
    ====================
      * [Fixed] Bug ID: 2816121 - UsbGlobals.OpenDevice(UsbDeviceFinder) Null 
        reference exception 
        Calling UsbGlobals.OpenDevice(UsbDeviceFinder) generates an exception 
        if the device is not found. 

      * [Fixed] Bug ID: 2818621 - DeviceNotifier Invalid Marshal fieldName 
        Exception 
        Field passed in is not a marshaled member of the type '
        LibUsbDotNet.DeviceNotify.Internal.DevBroadcastPort'. Parameter name: 
        fieldName. 

      * [Added] 3 example projects.

      * [Updated] documentation.


    V2.0.0 (07-01-2009)
    ====================
      * [Added] Support for Microsofts generic user-mode usb driver, WinUsb.

      * [Added] Added kernel level support for libusb-win32.

      * [Added] Added a new and improved InfWizard.

      * [Added] Added advanced USB locking strategies for process/thread level 
        usb device sharing.

      * [Added] Added Additional read/write functions added to the endpoint 
        reader/writer classes.

      * [Updated] Updated documentation with SandCastle (SHFB). Documentation 
        is now available in html and Microsoft Help .chm format.

      * [Updated] Updated LibUsbDotNet type and member names; they now adhere 
        to strict naming conventions.

      * [Added] Added additional members and types for more easily locating 
        and opening usb devices by: VendorIDProductIDRevision CodeSerial 
        NumberDevice Interface GUID


    V1.0.1 (10-09-2007)
    ====================
      * [Updated] Ported to C#2.0! Many API changes. See documentation.

      * [Added] Added Test_DeviceNotify sample project.

      * [Fixed] Fixed mising data issue with the DataReceived event.

      * [Updated] Rebuilt libusb core components with WINDDK 2003 (SP1).

      * [Added] Added Itanium 64bit support.

      * [Fixed] Fixed x64 installation error.


    V0.1.4 (07-18-2007)
    ====================
      * [Removed] Debug runtimes removed from the distributions to avoid 
        confusion.

      * [Added] New Class Added. The DeviceNotify class is used for receiving 
        device insertion/removal events. See documentation for full details.


    V0.1.3 (01-04-2007)
    ====================
      * [Added] Added lock routines to internal read/write functions to 
        increase multi-threading stability.

      * [Removed] Removed dependencies on msvcmrt.lib.

      * [Updated] Project defaults changed to compiled with /clr:pure syntax.

      * [Added] Added 64bit support.

      * [Fixed] Fixed function ClibUsb.Open(InfoDevice). It will now open 
        different devices with the same vendor and product id.

      * [Added] Added remove functions to the CLibUsb.ActiveEndPoints property 
        (CEndPonts class)


