Metodo IAdapterPowerManagement::P owerChangeState (portcls.h)
Il PowerChangeState
metodo richiede che il dispositivo cambi in un nuovo stato di alimentazione.
Sintassi
void PowerChangeState(
[in] POWER_STATE NewState
);
Parametri
[in] NewState
Specifica il nuovo stato di alimentazione richiesto per il dispositivo. Questo parametro è un'unione di tipo POWER_STATE. Nuovo stato di alimentazione (NewState.DeviceState) può essere uno dei valori di enumerazione DEVICE_POWER_STATE illustrati nella tabella seguente.
Stato di alimentazione | Significato |
---|---|
PowerDeviceD0 | Stato di alimentazione completa (D0). Questo codice può essere una funzione dello stato di alimentazione corrente. Salvare il nuovo stato. Questo valore locale viene usato per determinare quando memorizzare nella cache gli accessi alle proprietà e quando consentire al driver di accedere all'hardware. |
PowerDeviceD1 | Lo stato di sospensione con la latenza più bassa rispetto al tempo di latenza necessario per tornare a D0 |
PowerDeviceD2 | Stato di sospensione a bassa latenza. In questo stato, il driver di dispositivo non può presupporre che possa toccare l'hardware, quindi tutti gli accessi devono essere memorizzati nella cache e l'hardware ripristinato all'ingresso di D0. |
PowerDeviceD3 | Uno stato di ibernazione completo ed è lo stato di sospensione della latenza più lungo. Il driver non può accedere all'hardware in questo stato e deve memorizzare nella cache gli accessi hardware e ripristinare l'hardware al ritorno a D0 o D1 |
Valore restituito
nessuno
Osservazioni
PortCls chiama il PowerChangeState
metodo in risposta a un IRP di alimentazione IRP_MN_SET_POWER . Questa chiamata non deve avere esito negativo. PortCls e il sistema usano la PowerChangeState
chiamata per inserire il dispositivo nello stato di alimentazione desiderato. Quando il sistema tenta di sospendere o riprendere un flusso audio attivo, il driver deve essere in grado di salvare o ripristinare il contesto di dispositivo in modo appropriato.
Per assistere il driver, PortCls sospende tutti i flussi audio attivi prima di chiamare questo metodo per posizionare il dispositivo in stato di sospensione. Dopo aver chiamato questo metodo, PortCls rimuoverà i flussi audio attivi per riattivare il dispositivo. I miniport possono scegliere una notifica aggiuntiva usando l'interfaccia IPowerNotify .
Il driver miniport deve eseguire la modifica richiesta allo stato di alimentazione del dispositivo prima di tornare dalla PowerChangeState
chiamata. Se il driver miniport deve salvare o ripristinare qualsiasi stato del dispositivo prima di una modifica dello stato di alimentazione, il driver miniport deve supportare l'interfaccia IPowerNotify , che consente di ricevere un avviso anticipato di tale modifica. Prima di tornare da una PowerChangeState
chiamata riuscita, il driver miniport deve memorizzare nella cache il nuovo stato di alimentazione.
Mentre il driver miniport è in uno degli stati di sospensione (qualsiasi stato diverso da PowerDeviceD0), deve evitare la scrittura nell'hardware. Il driver miniport deve memorizzare nella cache tutti gli accessi hardware che devono essere posticipati fino a quando il dispositivo non viene nuovamente acceso. Se lo stato di alimentazione passa da uno degli stati di sospensione a PowerDeviceD0, il driver miniport deve eseguire qualsiasi accesso hardware posticipato dopo aver acceso il dispositivo. Se lo stato di alimentazione passa da PowerDeviceD0 a uno stato di sospensione, il driver miniport può eseguire tutti gli accessi hardware necessari durante la PowerChangeState
chiamata prima di spegnere il dispositivo.
Mentre è spento, un driver miniport non viene mai chiesto di creare un oggetto driver miniport o un oggetto flusso. PortCls inserisce sempre il dispositivo nello stato PowerDeviceD0 prima di chiamare il metodo NewStream del driver miniport.
Il codice per questo metodo deve risiedere nella memoria di paging.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | portcls.h (include Portcls.h) |