While the USBDetails program was very useful in getting started, a bug in it caused me to discount the value of the raw descriptors.
So now the applicable code to obtain the serial number is:
Dim ud As UsbDevice
ud = devices(device)
Dim connection As UsbDeviceConnection
connection = Connect(0, 0, interfaces)
Dim Obj1 As Reflector
Obj1.Target = connection
Obj1.Target = Obj1.GetField("connection")
Dim buffer(128) As Byte ' maximum packet size
Dim datalen, idx As Int
rawdescs = Obj1.RunMethod("getRawDescriptors")idx = rawdescs(16)
datalen = connection.ControlTransfer(128, 6, 0x0300 + idx, 0, buffer, buffer.Length, 100)
'buffer(0..datalen) contains string descriptor