//! Explanation of the libusbK project, the user mode library, and its \ref usbk_drivers /*! \page usbk_about About libusbK can be separated into two major components: - A Windows user mode USB library (libusbK.dll) - A Windows kernel mode USB driver (libusbK.sys) \section usbk_about_dll libusbK.dll (libusbK user library) libusbK.dll is a generic user mode usb library for the Microsoft Windows Operating System family. (Windows XP and up) Windows 2000 is currently not supported by the release builds or driver installer packages but can still be achieved with manual builds and custom driver installations. \note The libusbK library allows developers to target multiple drivers using the same set of api function declarations. \par \subsection usbk_drivers Supported Drivers The following usb kernel drivers are supported by the libusbK library: - \b libusbK.sys - \b libusb0.sys - Using the api functions exported by the libusbK library (functions beginning with with \b UsbK_) - Using dynamically loaded functions based on the devices driver type. see \ref libk - \b WinUSB.sys - Using dynamically loaded functions based on the devices driver type. see \ref libk \par \subsection usbk_winusb_compat WinUSB Compatibility Layer The libusbK library includes a \c Winusb.dll compatiblity layer. This makes libusbK a drop-in replacement for an existing WinUSB application. Developers can make use of this functionality in two ways: - Using the \b WinUsb_ prefixed function which are directly exported by libusbK.dll - Usage of the \c WinUsb_ prefixed functions is intended for developers who want to switch away from the \c WinUSB.sys driver without modifying application code. - The \c WinUsb_ prefixed functions must \b not be used for devices installed with the WinUSB.sys driver. - The \c WinUsb_ prefixed functions are identical to the exported \c UsbK_ prefixed functions, thus \b must be installed with either the \c libusbK.sys or \c libusb0.sys driver. - Using the \ref libk - This option allows users to target any of the \ref usbk_drivers but requires small modifications to the applications source code. \section usbk_about_sys libusbK.sys (libusbK kernel driver) libusbK.sys is a KMDF based usb device kernel driver for the Microsoft Windows Operating System family. (Windows XP and up) Windows 2000 is currently not supported by the release builds or driver installer packages but can still be achieved with manual builds and custom driver installations. The libusbK kernel driver uses an extended libusb-win32 (libusb0.sys) compatible driver api and provides higher-level functionality when compared to libusb0.sys. The following user mode usb libraries support the \c libusbK.sys kernel driver: - \b libusbK.dll - \b libusb0.dll */ /*! \page usbk_comparisons libusbK.sys Comparisons

libusbK.sys compared to other USB kernel drivers

libusbK.sys \advantages when compared to libusb0.sys: - Winusb-like power management. - Winusb-like pipe policies. - Driver-level asynchronous transfer timeouts. - Improved isochronous transfer support. - Newer, more robust KMDF based design.
libusbK.sys \disadvantages when compared to libusb0.sys: - Does not support multiple configurations. - Does not support a "filter driver" mode. - Significantly larger device driver installation packages. - Less tolerant of usb devices which or not fully compliant with usb specifications.
libusbK.sys \advantages when compared to WinUSB.sys: - Full isochronous transfer support. - Supports of XP64, Windows 2003, and Win2K (unofficial, see above comments) - Supports device reset. - Open source nature can eliminate the need for UDMF solutions. - Allows proccesses concurrent access to the same device. - Smaller driver installation packages.
libusbK.sys \disadvantages when compared to WinUSB.sys: - libusbK will not function as a lower filter driver of a UDMF driver as WinUSB.sys will. - WinUSB is pre-packaged with Vista and up. - Windows 8 has unique native support for WinUSB devices.
*/