Por que meu computador usa “Novo dispositivo USB” toda vez que eu conecto um em uma porta diferente?

47

Digamos que eu tenha um mouse. Eu conecto este mouse no slot 1 de 4 em um computador. Ele passa pelo novo dispositivo detectado e tudo isso, o que é bom. Mas se eu voltar mais tarde com o mesmo mouse e conectá-lo ao slot 3, ele fará a detecção novamente! Por que isso acontece?

    
por RCIX 24.08.2009 / 22:57

2 respostas

61

De acordo com o Raymond Chen :

Why does Windows not recognize my USB device as the same device if I plug it into a different port?

You may have noticed that if you take a USB device and plug it into your computer, Windows recognizes it and configures it. Then if you unplug it and replug it into a different USB port, Windows gets a bout of amnesia and thinks that it's a completely different device instead of using the settings that applied when you plugged it in last time. Why is that?

The USB device people explained that this happens when the device lacks a USB serial number.

Serial numbers are optional on USB devices. If the device has one, then Windows recognizes the device no matter which USB port you plug it into. But if it doesn't have a serial number, then Windows treats each appearance on a different USB port as if it were a new device.

(I remember that one major manufacturer of USB devices didn't quite understand how serial numbers worked. They gave all of their devices serial numbers, that's great, but they all got the same serial number. Exciting things happened if you plugged two of their devices into a computer at the same time.)

But why does Windows treat it as a different device if it lacks a serial number and shows up on a different port? Why can't it just say, "Oh, there you are, over there on another port."

Because that creates random behavior once you plug in two such devices. Depending on the order in which the devices get enumerated by Plug and Play, the two sets of settings would get assigned seemingly randomly at each boot. Today the settings match up one way, but tomorrow when the devices are enumerated in the other order, the settings are swapped. (You get similarly baffling behavior if you plug in the devices in different order.)

In other words: Things suck because (1) things were already in bad shape—this would not have been a problem if the device had a proper serial number—and (2) once you're in this bad state, the alternative sucks more. The USB stack is just trying to make the best of a bad situation without making it any worse.

    
por 24.08.2009 / 23:20
3

Windows (como você não afirma seu sistema operacional, eu assumo que isto é o que você está usando) associa um dispositivo à porta em que ele está conectado, por isso considerou "USB DISK A na porta X" diferente de "USB DISK A na porta Y "e liga os drivers e as entradas de registro de acordo.

Se você usar a opção "mostrar dispositivos não conectados" ao visualizar o Gerenciador de Dispositivos, você verá o dispositivo anexado a todas as portas nas quais ele já foi conectado, mas está esmaecido, pois não está atualmente neles. Quando você conecta o dispositivo em uma dessas portas, o Windows apenas ativará essa instância do driver, quando você conectá-lo a outra porta, precisará definir uma nova instância de driver para essa porta antes de ativá-la (que é o processo que você vê como usuário exibido como "adicionar novo dispositivo".

Isso permite que você tenha dispositivos idênticos conectados a portas diferentes trabalhando ao mesmo tempo. Existem outras maneiras de conseguir isso, com pouca ou nenhuma diferença prática para o usuário final que técnica o sistema operacional usa, mas é assim que o Windows decide organizá-lo.

    
por 24.08.2009 / 23:11

Tags