1.) No. If a function is able to deliver data, it returns immediately. If not, it waits for the specified timeout period and then gives up (returns).
"I don't know the maximum values, and it's not really important. These values specify timeouts for read or write access during operations between the Winusb device driver and the device hardware. The minimum value (read + write) is 0ms, which doesn't make sense. It doesn't make sense to wait more than a few seconds for a response from the device. Just keep the default values." Why should anyone give the driver, e.g., 10 minutes to get a reply from the USB hardware?
3.) The CAN hardware utilizes 32 CAN frame FIFO buffers. Writing to the hardware is NOT buffered by the device driver itself. Reading is buffered as a list, and no data will be lost as long as there is enough memory to store it and you do not close the connection.
"In practice, you don't need to worry about that." Nothing gets lost.
