Switching between different USB-Clients

The USB-function-driver can be used with different client-classes.

  • Mass_Storage_Class: Device appears as hard-disk.

  • RNDIS: Device appears as network-device.

  • Serial_Class: Device appears as serial-class / ActiveSync.

On system start the following registry decides which USB-client to use:

[HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers] "DefaultClientDriver"

Valid values for DefaultClientDriver are Mass_Storage_Class, RNDIS and Serial_Class.

At [HKEY_LOCAL_MACHINE\Drivers\USB\FunctionDrivers\<DefaultClientDriver-Name>] additional settings allow to configure the client-driver; i.e. which ProductID and text is shown at the PC-side or which volume to use for the mass-storage-class.

Dynamic switching between clients

You may even switch clients on runtime.
See Download for a sample program. This will take the name of the client-driver as parameter.

To accomplish a client-change the sample calls:

DeviceIoControl( hDevice, IOCTL_UFN_CHANGE_CURRENT_CLIENT, &clientname, sizeof(UFN_CLIENT_NAME), NULL, 0, NULL, NULL);

When &clientname is NULL, the current driver will be unloaded and the USB-slave port is disabled.

Download

More Information about KuK - USBFN Driver and Settings