wiki:windows_backend_activity_log

Version 10 (modified by pbatard, 3 years ago) (diff)

--

Activity Log

MAIN:
o detect WinUSB during enum to prevent WinUSB calls on non WinUSB devices [DONE using driver string: 2009.12.13]
o detect driverless devices during enum for future automated WinUSB driver addon
  - conn_info.CurrentConfigurationValue false => priv->driver = "no_driver" [DONE: 2009.12.14]
o actually read active configuration from conn_info [DONE: 2009.12.15]
o comment the inf with regards to CoInstallers' choice and add provision for Multiple Interfaces (MI_##) [DONE: 2010.01.08]
o xusb winusb test application
  - add string I/O to xusb [DONE: 2009.12.15]
  - full XBox controller support using control requests [DONE: 2010.01.03]
  - bulk I/O against USB key (Bulk-only Mass Storage) [DONE: 2010.01.04]
  - HID test support
o async (polled/overlapped) I/O
  - crude poll using OVERLAPPED pointers as fds + HasOverlappedIoCompleted [DONE: 2009.12.16]
  - control transfers [DONE: 2010.01.02]
  - retrieve actual length [DONE: 2009.12.16]
  - bulk/interrupt [DONE: 2010.01.04]
  - I/O cancellation [DONE: 2010.01.05]
  - handle async I/O that completed synchronously during request, in compat later and callback, and remove "chill out" error [DONE: 2010.01.20]
o device reset [DONE: 2010.01.05]
o the never ending multiple interfaces handling:
  - generic readout of registry keys and values [DONE: 2009.12.18]
  - retrieve full device path from HKLMSYSTEMCurrentControlSetControlDeviceClasses* [DONE: 2009.12.18]
  - WinUSB interface selection through MI_## [DONE: 2009.12.18]
  - new non-controversial interface enumeration through SetupDi [DONE: 2009.12.30]
  - WinUSB detection for interfaces [DONE: 2009.12.30]
  - better composite interfaces handling, with fully independent interface and composite device drivers [DONE: 2010.01.18]
  - HID composite interface handling [DONE? 2010.01.20]
o poll & pipe redesign
  - support for control fd ("fish in the pipe") [(actually) DONE: 2009.12.22]
  - overlapped support all the way [DONE: 2009.12.22]
  - mutex fd locking [DONE: 2009.12.23]
  - handling of synchronous completion of async requests [DONE: 2010.01.20]
o better/multiple API handling (refer to libusb-win32-v1) [API_CALL macro - DONE: 2009.12.18]
o sanitize_path & windows_error_string improvements [DONE: 2009.12.18]
o test on WinXP [OK: 2009.12.30]
o test against openocd/libftdi [OK: 2010.01.08]
o cygwin support [DONE: 2010.01.14]
o MSVC full compilation (preferred) or MSVC compatible MinGW lib with MSVC test sample
  - MSVC6 compatibility for windows_usb.c & windows_usb.h only (Michael Plante) [DONE: 2010.01.11]
  - MSVC9 full compatibility (win32) [DONE: 2010.01.11]
  - MSVC9 full compatibility (x64) [DONE: 2010.01.15]
  - MSVC8 full compatibility
  - MSVC6 full compatibility (Michael Plante) [DONE: 2010.01.21]
o DDK/sources compilation support (Orin Eman) [DONE: 2010.01.20]
o threading
  - add thread protection/locks
  - remove pthread dependency
o write some detailed notes for pthread-win32 integration on project page
o write a detailed guide for manual installation of the WinUSB driver
o handle rogue/ghost WinUSB drivers issue (set_device_paths vs hub enumeration) with a more explicit warning and advice
o HID API backend [DO]
o libusb0.sys backend

EXTRAS:
o auto-claiming interface for control transfers if none available [DONE: 2010.01.08]
o drop the DDK requirement [DONE: 2010.01.20]
o trace the query for HID input reports on Linux
o use CancelIoEx where available
o split windows_usb.c into main + backend files
o improved xusb 
  - less amateurish output
  - vid/pid specification as args
o hotplug
o automated driver installation. 
o use usbi list functions for our hcd chained list
o Win2k support? (Not from me!)
o use internal timer functions (CreateWaitableTimer) and switch USBI_OS_HANDLES_TIMEOUT on

BUGFIXES:
o deviceless external hub random failure on descriptors. Is there anything we can do?
  => check what's happening on the bus
o SetupDI### call enumerates composite devices at the root ("usbccgp") rather than the leaves ("WinUSB") 
  => trying to obtain the FULL path (i.e. path that works with CreateFile) of the WinUSB leaves of a composite device handled by usbccgp is an absolute nightmare! 
     For now, just replace the composite driver with a WinUSB one. Install is a pain (must force upgrade), but it works. ["FIXED": 2009.12.16]
o Well, above doesn't work for interface selection through WinUsb_GetAssociatedInterface (what the ???)
  => back to the (more versatile) separate MI_## for composite devices' interfaces ["RE-FIXED": 2009.12.17]
o poll says control fd overlapped IO complete [FIXED with a "poll we can believe in": 2009.12.22]
o bad composite device detection when device and hub have same port number [FIXED 2009.12.23: Don't use sizeof when you mean strlen!]
o use of ControlSet001 instead of CurrentControlSet[FIXED 2009.12.26]
o incorrect function on force_hcd_device_descriptor on XP [FIXED 2009.12.26: misplaced _EX]
o Location Information on XP does NOT return location information! [WORKAROUND: 2009.12.30]
o everlasting wait on devices that have gone to sleep? / timeouts don't work [FIXED: 2010.01.07]
o reset of Mass Storage devices sure doesn't seem to work as expected... [IT DOES when you don't forget the CSW query: 2010.01.07]
o crashes in pthreadGC2.dll when poll is unhappy about an fd [FIXED: 2010.01.07]
o doesn't use the default pthread-win32 library name on MinGW [FIXED: 2010.01.11]
o the infamous device with serial => no port# issue on XP [FIXED: 2010.01.12]
o 'CM_GETIDLIST_FILTER_BITS' macro redefinition error in cfgmgr32.h for Windows 7 and other DDK issues [FIXED: 2010.01.13]
o project doesn't open in VS 2005 [FIXED (with files created by Orin Eman): 2010.01.18]
o MinGW/cygwin produce a "warning: undefined symbols not allowed" [FIXED: 2010.01.18]
o dpfp warnings during autogen (MinGW/cygwin)
o "WARNING: unrecognized options: --enable-maintainer-mode" during autogen (MinGW/cygwin)
o current warning set does not pick signed <-> unsigned conversions [FIXED (DDK build will pick 'em): 2010.01.20]
o SPDRP_SERVICE sure doesn't work for MI_## members of HID composite devices. And of course "DeviceInterfaceGUIDs" doesn't apply to HID composite either. [FIXED using HID IF GUID: 2010.01.20]
o Should "usbaudio" devices be picked as HID? How many more non-pickable GUIDs should we add? [pointless, since we can't handle audio as HID => DROPPED: 2010.01.21]
o libusb-win32's _hid_get_string_descriptor is missing the 2 byte header [FIXED: 2010.01.20]
o Xiaofan's "linker path does not have real file for library" error on MinGW [was a [http://lists.cairographics.org/archives/cairo/2009-July/017686.html libtool issue] FIXED: 2010.01.24]
o cancelling transfers after a timeout leads to an infinite wait on the remaining fds (is this an issue in core?) [yup. FIXED: 2010.01.22]
o repeated "[libusb_get_next_timeout] first timeout already expired" messages on timeout cancellation [FIXED (Michael Plante): 2010.01.24]
o broken Linux version due to missing handle_timeouts_locked [FIXED: 2010.01.24]