These perform higher level functions which are either not performed by my example, or done by the C#. ST's application uses another two DLLs, STDFUFiles.dll and STDFUPRT.dll.
Some of the USB communications has been borrowed from an excellent article on USB HID programming that I found here. ST provides a STDFU library specification (UM0384) and file format document (UM0391) as part of the demo package.
ST provides a C++ demo application, which includes the Windows drivers for the DFU device and two DLLs which this application requires ( STDFU.dll, STTubeDevice30.dll). So when the C# application is updated, the firmware gets updated too. Using this code, I have been able to implement a scheme whereby the C# application which is communicating with the ST micro-controller based hardware, is able to automatically update the hardware's firmware. ST's version of DFU is called DfuSe (Device firmware upgrade STMicroelectronics Extension). DFU is a very handy way to program a micro-controller, particularly when it is in the micro's ROM, but all the example code from ST is in C++ and is somewhat complicated and buggy. Some of their micros have the DFU module in ROM and all can have it in FLASH. ST Micro-electronics STM32F series micro-controllers have the possibility to be programmed via USB using ST's DFU protocol.