Hello James,
The USB device stack already supports sending descriptors to Windows to automatically load the driver. This should work for everything greater than XP. Here are a few things to check.
1. Be sure you call USBD_SetMicrosoftDescriptorSupport() to enable the sending of the Microsoft OS descriptors before calling USBD_Open().
2. If implementing a composite device, the WinUSB interface must be the first one. For example, you must create the WinUSB interface first and then the mass-storage interface second. Windows only supports automatically loading the driver for the first interface.
3. Windows will only retreive the information (through Microsoft OS descriptors) for loading the driver once and it keeps a cache of this based upon the device's VID/PID values. If along the way, you've connected your device as a non-composite device, or just a mass storage device, Windows can keep using it's cache rather than reloading the info from the device. You can clear this cache by manually uninstalling the driver within the Device Manager in Windows. Right click the device in the manager window and selected Uninstall. Then disconnect and reconnect your device and Windows will re-read the OS descriptors.
Let us know if these items don't help you get it working as expected.
-Tyler