Activity Log
[OUR CURRENT PRIORITIES]
1. work required for official release, if any
2. bugfixes, if any
3. Windows Driver Installer library (libwdi) and samples
4. libusb0.sys integration
5. hotplug
6. multithreaded sample libusb application
7. poll abstraction
As long as a task with higher priority requires work, progress on lower priority ones will be postponed.
4 & 5 will only intervene after official release. 6 might be moved back up if our current threading implementation appears to be an issue.
[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]
- check errorcode from SetupDi [DONE: 2010.02.06]
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 [DONE (for control): 2010.01.28]
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]
- use libusb functions for updated fd resubmission [DONE: 2010.03.02]
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 [DROPPED]
- MSVC6 full compatibility (Michael Plante) [DONE: 2010.01.21]
o DDK/sources compilation support (Orin Eman) [DONE: 2010.01.20]
o threading/concurrency
- add concurrency protection in init/exit (Orin Eman) [DONE: 2010.01.27]
- use a separate thread for the timer functions [DONE: 2010.01.27]
- windows_compat update (apply Orin's spinlock + critical sections suggestion) [DONE: 2010.01.28]
- remove pthread dependency and improve Windows files (Orin + Michael) [DONE: 2010.01.30]
o HID API backend [DONE: 2010.01.26]
o API transition for core integration (interface -> usb_interface) [DONE: 2010.01.28]
o provide /MT version of pthread-win32 precompiled binaries [DONE: 2010.02.02]
o official release completion work:
- merge the concurrency branch back into master [DONE: 2010.01.30]
- break down core patches and post them for review [DONE: 2010.01.31]
- go over TODOs and address the ones that can be addressed for first release [DONE: 2010.02.07]
- write a detailed guide for manual installation of the WinUSB driver [DONE (for Windows 7): 2010.02.whatever]
- write some detailed notes for pthread-win32 integration on project page [DROPPED: no longer needed]
- edit relevant text files from core [CHECKED - NOT NEEDED]
- drop autotool requirement and provide a single configure file for source archives [DONE: 2010.03.03]
- check/improve DLLs produced with MinGW/cygwin (remove -0 suffic/cyg prefix, add versioning info, etc.) [DONE: 2010.03.05]
- figure out how to produce a release archive (hint: use cygwin's configure) [DONE: 2010.03.03]
- prevent the use of libusb_pollfd() on Windows [DONE: 2010.03.18]
- rename the 2005 project file and use them as base for release [DONE: 2010.03.19]
- run another memory leaks test [PASSED: 2010.03.19]
- check if the MinGW-w64 bug still occurs [FIXED!: 2010.03.19]
- document the current Windows restrictions [DONE: 2010.04.15]
- turn ENABLE_DEBUG_LOGGING off for release! [DONE]
- remove the _2008 solution files for release! [DONE]
- document attach/detach calls for Windows/OS-X [DONE (internal): 2010.04.16]
- .rc file removal [DONE (Michael, Peter): 2010.04.18]
- declspec dllexport and .def removal [DONE (Michael, Peter): 2010.04.19]
- confusing DDK build instructions [DONE (Michael): 2010.04.20]
- auto-release [DONE: 2010.05.24]
o revert to using a .def [DONE: 2010.08.02] => still needs a new patch #29 and others
[INITIAL POST RELEASE TASKS]
o Apply AM_MAINTAINER_MODE patch (Ludovic Rousseau) [DONE (in official): 2010.06.11]
o return an error on memalloc in init instead of continuing to open (Daniel's issue)
o HID: allow Get Report request for an OUT report or a Set Report request for an IN report (Alan Stern)
o HID: vendor requests
o HID: Set/Clear device feature (Remote Wakeup), Get device status, Set/Get Idle, if achievable (Alan Stern)
o Change the confusing LIBUSB_ERROR_NOT_FOUND returned when a valid interface has not been claimed to ERROR_ACCESS
o is it possible to set MSVC to use release rather than debug at startup?
o the whole c99 -> c89 switcheroo and configure.ac review
o -with-pthread-win32 option
o improved ddk build scripts/reuse what libusb-win32 is doing
o vsnprintf review if needed [NOT USED: 2010.08.02]
o safe_strcpy not so safe if you use min() and don't check against negative values [FIXED: 2010.08.02]
o Microsoft's ANSI calls are CP473, not UTF-8. Talk about a let-down!
[EXTRAS - POST RELEASE TASKS]
o default calling convention for Windows [DONE: 2010.04.13]
o rename windows_compat to something better [DONE: 2010.03.02]
o includes cleanup [DONE: 2010.02.24]
o use threads_posix AM var to prevent compilation of dpfp_threaded on MinGW [DONE: 2010.02.24]
o fix the HID report sizes for xusb in Linux [DONE: 2010.03.01]
o put pre-built binaries online [DONE: 2010.03.18]
o test pk2cmd against libusb 1.0 win [DONE: 2010.02.16]
o compatibility layer for Windows [SEEMS TO WORK: 2010.03.06]
o move real-time timer API call out of timer thread [DONE (Michael Plante): 2010.02.11]
o remove pthread-win32 usage from core [DONE (Michael Plante, Peter Stuge): 2010.02.20]
o libusb0.sys backend (r2?)
- add libusb0.sys to the backend [DONE (Graeme Gill): 2010.03.09]
- break down libusb transactions for the 64 KB limit
- transaction cancellation issue in free_fd
- support concurrent access to same endpoint from multiple threads
o poll abstraction
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 [NO LONGER NEEDED: 2010.02.11]
o use CancelIoEx where available [DONE: 2010.02.03]
o partially emulate CancelIoEx for XP and earlier [DONE: 2010.03.15]
o use overlapped Event in pipe/read/write [DONE: 2010.03.17]
o toggable debug logging [DONE: 2010.04.06]
o split windows_usb.c into main + backend files?
o improved xusb
- less amateurish output [DONE: 2010.01.27]
- vid/pid specification as args [DONE: 2010.01.28]
- more generic HID [DONE: 2010.02.06]
- default help and allow vid:pid single arg for strings only report [DONE: 2010.03.08]
- debug option and improved arg handling [DONE: 2010.04.06]
- dump HID descriptor to file [DONE: 2010.04.08]
- add output report test to HID and allow endpoint selection
- threaded xusb
o hotplug (r2?)
o use usbi list functions for our hcd chained list [NOT WORTH IT: 2010.02.16]
o Win2k support? (Not from me!)
o use internal timer functions (CreateWaitableTimer) and switch USBI_OS_HANDLES_TIMEOUT on
o HID collection selection? (re "the never ending multiple interfaces handling")
o handle rogue/ghost WinUSB drivers issue (set_device_paths vs hub enumeration) with a more explicit warning and advice
o switch to using cmake? [UNLIKELY as requires make replacement for end users]
o add #pragma comment( lib, "setupapi.lib" ) etc in xusb, as suggested by Tim Roberts [DONE: 2010.04.16]
o remove dependency on ole32, setupapi, advapi32 libs
o 2003 / XP64 testing
o HID vendor requests (suggested by Jason Kotzin) (need firmware that supports it)
o installer
[NON-WINDOWS RELATED]
o log callback
o geographical location
o libusb-compat improvement (Michael's post)
[BUGFIXES]
o deviceless external hub random failure on descriptors. Is there anything we can do?
=> trace 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) [FIXED]
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]
o Mass Storage test in xusb is broken in many places [FIXED (Alan Stern): 2010.01.30]
o the compatibility layer's poll() conflicts with cygwin's poll() [FIXED: 2010.01.28]
o _beginthreadex is not available on cygiwn [FIXED (fallback to CreateThread): 2010.01.30]
o <7 bytes HID items packets are being rejected [FIXED: 2010.02.07]
o unable to select WinUSB interface > 0 for non composite devices [FIXED (Dave C.): 2010.01.06]
o 2 bytes control transfers fail when using HidD_GetInputReport ("a device attached to the system is not functioning") [DROPPED: 2010.02.11]
likely to be due to http://msdn.microsoft.com/en-us/library/ms789883.aspx:
"In addition, some devices might not support HidD_GetInputReport, and will become unresponsive if this routine is used."
o HID overflows on first control report [FIXED: 2010.02.10]
o Xiaofan and others issues with HID (PICKit2, etc.) [FIXED: 2010.02.16]
o memory leaks in poll and set_composite (Francesco Montorsi) [FIXED: 2010.02.09]
o claim_interface crashes libusb w/ MinGW (Jere Knaappila) [DROPPED (was a pthread-win32 install issue): 2010.02.11]
o cancel_transfer, free_transfer and mutexes (Jere Knaappila) [FIXED: 2010.02.17]
o is HID getfeature really working? No it wasn't, and still isn't! [NOW FIXED: 2010.02.23]
o parent of a reused device might change during re-enumeration. [FIXED: 2010.02.18]
o backend will crash when trying to open an uninitialized device. [FIXED: 2010.02.19]
o error and warning messages don't seem to pop out when debug is disabled [FIXED (toggable logging): 2010.04.06]
o cygwin shouldn't use threads_windows.c [FIXED: 2010.02.24]
o libusb .NET reports an issue with threads [FIXED (C# and C use different calling conventions - Travis Robinson): 2010.02.25]
o fallout from the above: DDK and MSVC use different calling conventions ["FIXED" (forced stdcall conv for DLL in MSVC): 2010.03.08]
o libusb_handle_events_timeout does not poll new transactions (Jere Knaappila) [FIXED: 2010.03.02]
o "[_hid_get_feature] error Windows error code 4294967291" error with the new getfeature code for HID devices without feature reports [FIXED: 2010.02.25]
o these "program assertion failed - WinUSB interface 0 found at position 1" messages (Jere, Xiaofan) [FIXED 2010.05.21]
o Xiaofan's issue with libtool [PROPERLY FIXED (force locale to C always in libtool): 2010.03.08]
o cached devices shouldn't be unref'd in enumerate (Travis Robinson) [FIXED: 2010.03.04]
o resource.h is bothersome - can we remove it? [YES WE CAN: 2010.03.06]
o overwhelming timeout polling with multiple threads (Graeme Gill) [FIXED (Graeme Gill): 2010.03.11]
o driver installer double warning [FIXED: 2010.03.11]
o despite driver installation success, device is still listed driverless [FIXED: 2010.03.12]
o ERROR_OPERATION_ABORTED when thread is cancelled before control pipe is read (Graeme Gill) [FIXED: 2010.03.17]
o cancel_io "Unable to cancel I/O that was started from another thread" on XP when running xusb [FIXED: 2010.03.19]
o MSVC debug mode and CloseHandle() for the pipe overlapped event. [FIXED: 2010.03.19]
o the new fake pipe event appears to be creating a race condition in usbi_fd_notification (Travis Robinson) [FIXED: 2010.03.21]
o "could not duplicate handle for CancelIo - using original one" in multithreaded app on XP (Travis Robinson) [FIXED: 2010.03.22]
o double removal of wfd can result in newely allocated wfd being freed (Travis Robinson) [FIXED: 2010.03.22]
o init returns -99 if WinUSB.dll is not present (Kenichi Cui) [FIXED: 2010.04.01]
o HID and Feature Reports (Axel Rohde) - cannot use DEVICE [FIXED: 2010.04.06]
o HID and Feature Reports (Axel Rohde) - bad report lengths in xusb [FIXED: 2010.04.07]
o HID and Feature Reports (Axel Rohde) - first byte eaten when report IDs are in use [FIXED: 2010.04.15]
o HID and Feature reports (Axel Rohde) - Windows backend reports different size from Linux [NOT A BUG: 2010.04.15]
o libusb still uses the old descriptors after a firmware upload changed said descriptors (Uwe) [will be handled with hotplug: 2010.04.20]
o assign_endpoints should return proper error code and provide debug (Uwe) [DONE: 2010.04.18]
o cannot issue control requests to a composite device with HID keyboard in #0 and WinUSB in #1 (Jason Kotzin) [FIXED: 2010.04.27]
o these "could not duplicate handle for CancelIo - using original one" again (Samuel Thibault and others) [WinUSB handles are NOT duplicable - changed to debug message: 2010.05.21]
o 20 ms control request seems to be ignored with WinUSB (Samuel Thibault)
o spurious extra data with WinUSB (Samuel Thibault) [NOT A BUG (came from FTDI handling): 2010.05.25]
o do we have an issue with early control requests (set_configuration) when autoclaim is disabled? [FIXED: 2010.05.24]
o device address is zero program assertion failure [FIXED (driverless devices use devaddr 0): 2010.05.21]
o HID does not honour the string index for serial (Axel Rohde) [FIXED: 2010.06.14]
o DDK builds doesn't seem to use the expected config.h when another one is available [FIXED: 2010.08.17]
o WinUSB should work as a replacement of usbccgp (Benjamin Dobell et al.) [FIXED: 2010.08.10]
o configuration numbers do not necessarily occur in any specific order (Benjamin Dobell + Tim Roberts) [FIXED: 2010.08.10]
o attempting to read input reports through a control transfer seems to render my USB headset device non responsive in WinUSB as usbccgp mode. Interrupt is fine
[DROPPED (same thing occurs on Linux): 2010.08.10]
o missing WINAPI qualifier for 32 bit InterlockedExchange/Increment for results in undefined symbols [WORKAROUND: 2010.08.15 - NEED TO RAISE ISSUE WITH MiNGW-W64 TEAM!]
o 64 bit MinGW-w64 lib calling convention changed sometime since Dec. 2009 => WPG-System64 binaries are now broken [FIXED: use newer MinGW-w64]
o libusb doesn't support filter drivers [FIXED: 2010.08.19]
o [wdi] "Warning: .stabs: description field too big, try a different debug format" on MinGW-32 [FIXED (disable -g): 2010.03.24]
o [wdi] pipe communications between installer and lib don't seem to work with MinGW [FIXED (DON'T PICK EXE from dir, use the one in .libs!!!): 2010.03.23]
o [wdi] "(3) System does not work under WOW64 and requires 64-bit version." when running 32 bit installer [NOTHING WE CAN DO: MUST HAVE 64 BIT EXE EMBEDDED!]
o [wdi] "sh: Bad file number" [FIXED (more UAC disputable choices): 2010.03.24]
o [wdi] "gcc.exe: -lusb-1.0: linker input file unused because linking not done" [FIXED: 2010.03.24]
o [wdi] DifXAPI.dll must be provided on XP [DROPPED: 2010.03.28]
o [wdi] ShellExecuteEx w/ runas is not very XP friendly [FIXED (Use CreateProcess): 2010.03.25]
o [wdi] default proposed user for XP does not seem to have sufficient privileges for install [NAH, see below]
o [wdi] if XP user chooses "protect my computer and data from unauthorized program activity" on the installer, ShellExecuteEx never returns! [FIXED (CreateProcess): 2010.03.25]
o [wdi] "Unable to get the OEM Inf for device ROOTLEGACY_######" info messages from DifX on XP [FIXED (don't use DifX): 2010.03.28]
o [wdi] final installation does not seem to launch if cached oem already exists for device on XP. Can DifX be more forceful about that? [FIXED (don't use DifX): 2010.03.28]
o [wdi] cygwin with -mno-cygwin produces a "warning: passing arg 2 of `execv' from incompatible pointer type" with the embedder [FIXED: 2010.03.26]
o [wdi] test app compiled in a Win7 Free DDK build environment doesn't run on XP [FIXED (added warning): 2010.03.30]
o [wdi] Windows fails to find the driver file when device is plugged in after SetupCopyOEMInf is used [FIXED (don't use SPOST_NONE!): 2010.03.29]
o [wdi] the above going to be a problem if the files are removed before the device is plugged back in.
Should we add DriverPackagePreinstall (and DifXAPI) back again or just warn the user? [WILL SEE ON USER REPORTS]
o [wdi] IsUserAnAdmin is unknown on MinGW (hook into the DLL) [DONE: 2010.04.20]
o [wdi] Why doesn't UAC auto elevation work when I rename setdrv to setup any more? [Installer detection only applies to 32 bit apps!!:
see http://msdn.microsoft.com/en-us/library/bb530410.aspx#vistauac_topic3]
o [wdi] cygwin build is broken [FIXED: 2010.05.02]
o [wdi/wd-gui] the "setdrv" "setdrv_gui" names suck [FIXED: 2010.04.28]
o [wdi] MinGW's installer_x64 is currently broken - syslog thread issue [FIXED (what a nightmare!!): 2010.06.01]
o [wdi] wdi_create_list fails to include most driverless devices in non driverless_only [FIXED: 2010.06.02]
o [wdi] blank spaces at the end of a device name are not removed (eg: "iPod ") [FIXED: 2010.06.04]
o [wdi] when building for 64 bit, the libusb0.sys x86 files are missing [FIXED: 2010.07.08]
o [wdi] WinUSB driver is no longer selectable when built from DDK [FIXED: 2010.06.25]
o [wdi] subdirectories are not automatically created if missing [FIXED: 2010.07.08]
o [wdi] typo in libusb0.sys installation for x86 (spotted by Travis) [FIXED: 2010.07.12]
o [wdi] inf and cat are still created as admin [FIXED: 2010.07.13]
o [wdi] embedder crashes when using custom and not providing any files [FIXED: 2010.07.13]
o [wdi] UTF-8 is pretty bad (inf file will remove extended chars, etc) [FIXED: 2010.07.28]
o [wdi] wdi_read_logger: error Input/output error on win2k [AUTOFIXED: 2010.08.19]
o [wdi] unlike advertised, multilib MinGW-w64 doesn't build 64 bit compat 32 bit binaries [FIXED: 2010.07.15]
o [wdi] "[wdi_install_driver] program assertion failed: message overflow" (reported by Travis Robinson) [FIXED: 2010.07.15]
o [wdi] "successfully extracted xyz.cat" - should be .inf [FIXED: 2010.07.26]
o [wdi] inf are not CRLF'd (reported by Xiaofan) [FIXED? 2010.07.19]
o [wdi] cannot extract files when compiled with cygwin [FIXED (what a nasty bug!): 2010.07.25]
o [wdi] security prompt can persist after a failed install notification [FIXED: 2010.07.26]
o [wdi] progress bar looks bad on XP / non Aero 7/Vista
o [wdi] "not a valid assembly or a COM component." when trying to use it in C#/.NET (reported by Ken Abryl Eleazar Salanio)
o [wdi] display of debug setupapi.log on is mixed up, since the log is current locale and we expect UTF-8 [FIXED: 2010.08.20]
o [wdi] syslog truncation on win2k
o [zadig] why do these all these control look SO UGLY compared to what MSVC promises? [FIXED ("ooh, shiny!!"): 2010.05.28]
o [zadig] the font in device selection still looks 3.1ish... [FIXED: 2010.05.31]
o [zadig] bad placement of controls wrt device dropdown [FIXED: 2010.05.03]
o [zadig] application goes away on UAC [FIXED: 2010.04.24]
o [zadig] oh yeah? well then application loses icon after successful driver install. Ha! [FIXED: 2010.05.26]
o [zadig] application becomes unresponsive for a while during driver installation. Is there anything we can do to prevent that? [FIXED: 2010.05.26]
o [zadig] I've seen the application crash when playing with the checkboxes (before Windows decided to force compatibility mode) [seems to be FIXED: 2010.05.03]
o [zadig] that "make[2]: Circular setdrv_gui.rc <- setdrv_gui.rc.o dependency dropped." with MinGW [FIXED: 2010.04.23]
o [zadig] driverless devices only show in driverless mode - should be listed in other mode [FIXED: 2010.06.01]
o [zadig] log is cleared during installation because of device events / likely issue of popup if edit mode [AUTOFIXED]
o [zadig] cannot copy from log/info box [FIXED: 2010.02.22]
o [zadig] devices that don't have ID strings are not listed [FIXED: 2010.04.16]
o [zadig] no right scroll on device list (IBM USB kbd) [FIXED: 2010.04.23]
o [zadig] I've seen log output adds squares at EOL on XP [FIXED: 2010.07.15]
o [zadig] I've still seen the app log forget about CR for some reason (This seems to happen when the cursor is not at the end) [FIXED: 2010.06.08]
o [zadig] "SHCreateItemFromParsingName entry point not found in shell32.dll." when running MSVC ver on XP (Travis Robinson) [FIXED: 2010.05.23]
o [zadig] UAC and Visual Styles don't apply to MinGW/cygwin - is there anything we can do? [YES WE CAN! - FIXED: 2010.05.28]
o [zadig] selecting text changes the field background colour [FIXED: 2010.06.24]
o [zadig] edit desc (and dropdown) can be changed during install [FIXED: 2010.06.25]
o [zadig] re-cliking install too soon after a cancelled install results in a "could not create/extract files in " message [FIXED: 2010.06.30]
o [zadig] crashes on XP [FIXED (bad string dim): 2010.06.16]
o [zadig] still seeing double insert notifications from time to time [ACCEPTABLE BEHAVIOUR: 2010.08.19]
o [zadig] the Window dimensions on machine with non default DPI are dead wrong [FIXED: 2010.06.28]
o [zadig] Microsoft's driverinstaller.exe can time out (300 secs) on Vista 64! [FIXED: 2010.07.08]
o [zadig] getting a refresh during installation, which changes internal description. [FIXED: 2010.06.30]
o [zadig] of course XP has to mishandle our background colouring for fields [FIXED: 2010.08.19]
o [zadig] manually edited description is truncated under some conditions
o [zadig] I've seen zadig fail to display the driver after a successful install in basic mode [CAN'T SEE IT ANYMORE: 2010.07.26]
o [zadig] seen "program assertion failed - editable_desc != NULL" on driverless device insert
o [zadig] log dialog can flash after the progress bar dialog is closed (test this with a MinGW32 zadig on x64)
o [zadig] can crash post exit on cygwin (dump analysis doesn't reveal a direct crash coming from code on exit..) [WORKAROUND: 2010.08.20]
o [zadig] 64K of log is not enough for everybody! [FIXED: 2010.08.19]
o [zadig] bad scrollup / log tearing [FIXED: 2010.08.19]
[WINDOWS DRIVER INSTALLER (WDI)]
o detect driverless devices [DONE]
o generate basic inf [DONE]
o embed CoInstaller files within library [DONE]
o check validity of generated inf with DDK's Chkinf [DONE: 2010.03.08]
o escalate to admin rights for install:
- create yet another separate installer exe and run it as priviledged [DONE: 2010.03.10]
- communication between installer exe and installer lib [DONE (named pipe): 2010.03.11]
- force reenumeration of devices with new driver in driver-installer [DONE: 2010.03.12]
- embed/extract installer exe into lib [DONE: 2010.03.15]
- add rc/res description to installer exe for UAC warning [doesn't help but DONE: 2010.03.15]
- add status to communication process [DONE: 2010.04.16]
o add selective 64 bit installer exe selection to prevent compat warning on 64 bit [DONE: 2010.03.16]
o Windows 7 device description retrieval (pfew!) [DONE: 2010.03.16]
o is there a way to force library functions to be embedded in exe always, or do we have to add res manually?
- alright, MS's handling and linking of resources is useless - write our own resource handler [DONE: 2010.03.23]
o separate driver-installer into a libusb-compat type project [DONE: 2010.03.23]
o add MinGW/cygwin support:
- basic autotool support [DONE: 2010.03.23]
- add the resource step + cleanup [DONE: 2010.03.23]
- add 32/64 bit capability detection [DONE: 2010.03.24]
- add coinstaller DLL detection [DONE: 2010.03.25]
- DDK directory from configure [DONE: 2010.03.25]
- is it possible to get both 32 and 64 compiled with MinGW-w64? [YES, using WPG-System64: 2010.03.24]
- force production of 32 bit library on 64 bit systems, for compatibility [DONE: 2010.03.26]
- add warnings if compiler can only produce 32 or 64 [DONE: 2010.03.26]
- prevent embedding of resources that won't be needed [DONE: 2010.03.26]
- force resource step on installer.exe changes [DONE: 2010.04.02]
o enable list that includes devices that already have a driver [DONE: 2010.03.26]
o improve (non GUI) test application
- ask for confirmation before installing driver [DONE: 2010.03.26]
- allow for device name editing [NAH - use zadig instead: 2010.06.21]
- integrate Joseph's changes [DONE: 2010.06.14]
- auto add MI# to given name for composite [DONE: 2010.03.26]
o detect "reject unsigned drivers" (ERROR_NO_CATALOG_FOR_OEM_INF) on XP, and advise users on how to disable that option
(http://articles.techrepublic.com.com/5100-10878_11-5875443.html) [DONE: 2010.04.14]
o prevent reentrant calls to libwdi [DONE: 2010.06.10]
o add init/exit call [NO LONGER NEEDED: 2010.04.12]
o return WDI error codes on WDI functions [DONE: 2010.04.12]
o make wdi_install_driver async/threaded with pipe for messaging (is it worth it without DifXAPI?) [NOPE: 2010.04.12]
o test on Vista/XP [XP: OK, VISTA: OK]
o add a timeout for communications between installer/libwdi [DONE: 2010.03.25]
o detect if another installer is running [DONE: 2010.03.28]
o remove DifX dependency [DONE: 2010.03.28]
o detect phantom devices [DONE: 2010.03.29]
o add DLL output project in MSVC [DONE: 2010.04.30]
o allow/test the use of remote driver files / add remote URL as an option (v2)
o DDK sources support
- how do you force static? [TARGETTYPE=LIBRARY: 2010.03.29]
- again, is it possible to get both 32 and 64 bit compiled at once? [YES: 2010.03.26]
- pick up DDK path from shell [DONE: 2010.03.30]
o Windows logging facility [DONE: 2010.04.02]
o detect elevated installer/user on UAC platforms and use CreateProcess to prevent unnecessary UAC prompt [DONE: 2010.04.02]
o use manifest to force UAC elevation of sample program [DONE (for all): 2010.05.28]
o better status [DONE: 2010.04.16]
o default calling convention for public API [DONE: 2010.04.16]
o current date in inf [DONE: 2010.04.29]
o generate blank cat file [DONE: 2010.07.12]
o use updated libusb0.sys inf template and file structure [DONE: 2010.07.12]
o move VID -> Manufacturer String resolution into libwdi [DONE: 2010.07.12]
o use a script to generate the VID -> Manufacturer sources according to the latest web data [DONE: 2010.07.13]
o use proper manufacturer in generated inf + allow the provision of custom manufacturer in options [DONE: 2010.07.14]
o add IA64 libusb0.sys/dll [DONE: 2010.07.14]
o switch to using tokenizer [DONE: 2010.07.17]
o automate versioning for .rc files from the git tags [DONE: 2010.07.26]
o why oh why didn't Microsoft use UTF-8 for A vs W?!? [ADDRESSED (pfew!): 2010.07.28]
o win2k support [OK: 2010.07.28]
o can we hook into the OS driver installation dialogs, instead of using our own (or reuse dpinst)?
o revert back to using a def + def autogeneration for MS/MinGW compatibility, like libusb does
o follow libusb's calling convention changes
o fix the bugs and get a 1.0 release already!!
o zadig (GUI app)
- DDK/MinGW/MSVC compat [DONE: 2010.03.30]
- Editable description [DONE: 2010.03.31]
- hotplug detection & reenumeration [DONE: 2010.04.01]
- create new [UNTESTED: 2010.04.01]
- log output to dropdown [DONE: 2010.04.02]
- browser control for folder selection (this IS going to be a massive pain!) [DONE: 2010.04.19]
- using C is becoming a pain, switch to C++ [actually, it's not. MFC and GDI+ are, and they're out of bound for MinGW, so no good reason to switch... yet: 2010.04.23]
- application icon/about/info/etc [DONE: 2010.04.28]
- clickable URL on "About" box [DONE: 2010.04.30]
- move standard dialog handling (About, browse for folder) to separate file [DONE: 2010.04.30]
- add log clearout control [DONE: 2010.05.03]
- only use drivers that are actually embedded in libwdi [DONE: 2010.05.25]
- display busy pointer during installation [DONE: 2010.05.26]
- provide an option for generation of driver files only, for signing (suggested by Xiaofan) [DONE: 2010.05.27]
- hide MI when unavail/unneeded [DONE: 2010.05.27]
- basic/advanced mode [DONE: 2010.05.27]
- ungray the fields [DONE... but is it really better?: 2010.05.31]
- add a status line for basic mode [DONE: 2010.05.28]
- move checkboxes to option menu [DONE: 2010.05.28]
- add log save [DONE: 2010.05.31]
- background driver colour according to type [DONE: 2010.06.02]
- keep the current device selected in the dropdown list [DONE: 2010.06.02]
- include libconfig for cfg/ini parser [DONE (would have been faster to write my own parser!): 2010.06.03]
- add progress bar during installation [DONE: 2010.06.07]
- add notifications for install success/failure/cancel [DONE: 2010.06.08]
- clarify the code by using WindowsX macros [DONE: 2010.06.08]
- custom driver extraction [DONE: 2010.06.11]
- use ini to set default options [DONE: 2010.06.17]
- improve UI by following MS's UI guidelines
- setting of the log level [DONE: 2010.07.26]
- allow the provision of an external inf/conf file / custom driver fixed inf file? [NO LONGER NEEDED (can be done in libwdi itself)]
- use description for inf name [DONE: 2010.07.02]
- add mouseover for vendor over VID [DONE: 2010.07.02]
- allow the generation of an inf file only for existing driver [NO LONGER NEEDED (Extract Only will do): 2010.06.04]
- warn when overwriting a system driver (keyboard, mouse, mass storage) [DONE: 2010.06.02]
- use double click for edit rather than a checkbox [NAH: 2010.05.28]
- colours in log dropdown according to level? [NOT WORTH IT: 2010.06.24]
- use default temp folder in basic mode [NAH: 2010.05.28]
- maybe we should tone down notifications a notch between log, status and dialogs
- feedback our cygwin/DDK/64 bit changes to the makers of libconfig
- change the progress text to warn about the super long MS induced delays [DONE: 2010.06.30]
- prevent the entering of non hex chars for VID/PID (will need subclassing => v2 or never)
- add testlibusb-win.exe support for libusb0.sys
- provide a win2k compatible Zadig binary [DONE: 2010.07.15]
o add the inf-wizard from libusb-win32 in samples [DONE: 2010.08.17]
o can we automate the minor version number in libwdi.rc from git tags? [DONE: 2010.07.26]
o allow the provision of signed inf/cat, and other files in the embedder [DONE: 2010.04.29]
o add custom driver to the list of driver types [DONE: 2010.06.11]
o allow the removal of WinUSB [DONE: 2010.06.12]
o add checking of libusb0.sys files (suggested by Xiaofan) [DONE: 2010.06.11]
o add option to overwrite usbccgp & usbhub [DONE: 2010.07.02]
o either send something with the installer log or remove it [REMOVED: 2010.05.03]
o hook into %WINDIR%SetupAPI/setupact.log to provide real-time update of the installation process? [DONE: 2010.05.26]
o add checks for pipe full + option to provide pipe size [DONE (pipe full not needed): 2010.06.09]
o documentation
- API [DONE: 2010.05.25]
- install/conf [DONE: 2010.06.16]
- zadig
- FAQ
- reuse
o libusb0.sys driver embedding & installation [DONE: 2010.05.18]
o add an option to select whether the device should be included in the "Safely remove hardware" list or not (HKR,,SurpriseRemovalOK...) [DROPPED on libusb-win32 advice]
o add DLL info [DONE: 2010.04.30]
o remove context in logging facility / alternative to context? [DONE: 2010.04.16]
o add MS redist license [DONE: 2010.04.29]
o allow the removal of WinUSB for DDK builds? [ON REQUEST]
o test anticipated driver installation [PASS: 2010.06.24]
o create all files as a the user that launched the process [DONE: 2010.06.30]
o run another memory leak test
o driver uninstallation (v2)
o set IgnoreHWSerNumVVVVPPPP so that devices with different serials don't prompt for driver reinstall (v2)
o (optional) post install cleanup [TOO RISKY, DROPPED: 2010.06.21]
o existing driver removal/replacement? [SEEMS TO WORK: 2010.04.19]
o provide DDK redist binaries for those who don't want to download the whole lot [TOO GREY AN AREA - SKIPPED: 2010.04.29]
o should read_logger return the severity level? [ON REQUEST: 2010.07.25]
o move progress bar into libwdi, and allow its optional use [DONE: 2010.07.22]
o move notifications into libwdi too? [NAH: 2010.07.26]
o integrate libusb0.sys driver building into libwdi? [NAH: 2010.07.25]
o enable the use of installer.exe as a standalone with args from cmdline instead of pipe (v2?)
o enable the use of MS's dpinst.exe in lieu of the installer (v2)