Riattivazione remota dei dispositivi USB
I dispositivi USB che possono rispondere ai segnali di riattivazione esterni mentre sono sospesi hanno una funzionalità di riattivazione remota . Esempi di dispositivi con funzionalità di riattivazione remota sono mouse, tastiere, hub USB, modem (riattivazione), schede di interfaccia di rete, riattivazione del cavo. Tutti questi dispositivi sono in grado di produrre segnali di riattivazione remota. I dispositivi che non sono in grado di generare segnali di riattivazione remota includono telecamere video, dispositivi di archiviazione di massa, dispositivi audio e stampanti.
I driver per i dispositivi che supportano il segnale di riattivazione remota devono inviare un IRP_MN_WAIT_WAKE IRP, noto anche come IRP di attesa, per armere il dispositivo per la riattivazione remota. Il meccanismo di riattivazione di attesa è descritto nella sezione Supporto dei dispositivi con funzionalità di Wake-Up.
Riattivazione remota su un dispositivo foglia USB
Nella terminologia USB un dispositivo USB è abilitato per la riattivazione remota quando viene impostata la relativa funzionalità di DEVICE_REMOTE_WAKEUP. La specifica USB specifica che il software host deve impostare la funzionalità di riattivazione remota in un dispositivo "solo prima" per mettere il dispositivo in sospensione.
Per questo motivo, lo stack USB non imposta la funzionalità di DEVICE_REMOTE_WAKEUP su un dispositivo dopo aver ricevuto un'IRP di attesa per il dispositivo. Attende invece fino a quando non riceve una richiesta di IRP_MN_SET_POWER per modificare lo stato del dispositivo WDM del dispositivo in D1/D2. Nella maggior parte dei casi, quando lo stack USB riceve questa richiesta, imposta la funzionalità di riattivazione remota nel dispositivo e inserisce il dispositivo in sospensione sospendendo la porta upstream del dispositivo. Quando si progetta e si esegue il debug del driver, è consigliabile tenere presente che esiste una relazione libera tra l'arming di un dispositivo USB per la riattivazione del software, tramite un'IRP di attesa e l'arming del dispositivo per la riattivazione hardware impostando la funzionalità di riattivazione remota.
Lo stack USB non abilita il dispositivo per la riattivazione remota quando riceve una richiesta di modifica del dispositivo a uno stato di sospensione D3, perché in base al modello di alimentazione WDM, i dispositivi in D3 non possono riattivare il sistema.
Comportamento di riattivazione quando si collega o si scollega un dispositivo USB
Un altro aspetto univoco dell'implementazione USB della modalità di alimentazione WDM riguarda l'arming degli hub USB per la riattivazione remota. Se un dispositivo foglia USB sul bus è armato per la riattivazione, lo stack USB armerà anche il controller host USB per la riattivazione, ma non armerà necessariamente nessuno degli hub USB a monte del dispositivo. Il driver dell'hub USB esegue il braccio di un hub per la riattivazione remota solo se lo stack USB è configurato per riattivare il sistema sugli eventi di collegamento e scollegamento (plug/unplug).
I controller host universali (UHCI) USB host controller non distinguere tra il segnale di riattivazione remota e connettere gli eventi di modifica nelle porte dell'hub radice. Ciò significa che il sistema si riattiva sempre da uno stato di alimentazione a basso sistema quando un dispositivo USB è connesso o disconnesso da una porta dell'hub radice se è presente almeno un dispositivo dietro il controller UHCI che è armato per la riattivazione.