A USB device usually comprises one or more interfaces, with
each interface having one or more configurations. Each interface contains
one or more communications paths called pipes. Each pipe behaves like
a virtual circuit in a network.
By default, the control pipe is opened to identify a device
and to match a driver for the device. The control pipe is a bidirectional
pipe: You send commands out over the pipe and, optionally, receive
data back.
Three other types of pipes are the interrupt, bulk, and isochronous pipes. The interrupt pipe is used to report
an insertion and removal of a card. Bulk input and bulk output pipes
are used to move data on and off the card.
As part of configuring a device, the driver opens all the necessary
pipes and sets the desired configuration.
NOTE: OpenVMS currently does not support isochronous pipes.